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