1

md-autocomplete を使用すると、フィルターは現在のキー入力ではなく、最後から 2 番目のキー入力に適用されます。フィルタリングのさまざまなオプションを試しましたが、行き詰まっており、Meteor コレクションを md-autocomplete と統合する方法がわかりません。

コントローラー コンポーネントでは、フィルター ロジックを次のように実装しています。

this.searchText = '';
this.subscribe('people');

this.helpers({
    people() {
        return People.find({
            name: {
                $regex: `${this.getReactively('searchText')}.*`,
                $options: 'i'
            }
        });
    }
});

私のテンプレートは次のようになります。

<md-autocomplete
    md-selected-item="ctrl.selectedItem"
    md-search-text="ctrl.searchText"
    md-items="person in ctrl.people"
    md-item-text="person.name"
    md-min-length="0"
    placeholder="Who should be selected?">
  <md-item-template>
    <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{person.name}}</span>
  </md-item-template>
  <md-not-found>
    Nobody found matching "{{ctrl.searchText}}".
  </md-not-found>
</md-autocomplete>

フィルターは、リストをフィルター処理するために my searchText の最後のキーが適用されないという問題に加えて機能します。

例: コレクションに「ティル」、「トニー」、「アンディ」という人物がいます。「T」と入力すると、何も除外されませんが、Till と Tony の T はリストで正しく強調表示されます。「Ti」と入力すると、Till と Tony はリストに残り、Andy は除外されます。Till の「Ti」が強調表示されます。したがって、強調表示は期待どおりに機能しますが、最後に入力した文字にはフィルターが適用されません。

私のsearchTextをmd-autocompleteに正しく適用する方法について、いくつかのヒントをいただければ幸いです。私は自分の間違いを何時間も探していましたが、成功しませんでした。

4

0 に答える 0