我正试图让angular-material库中的md-autocomplete
工作,文档有点难以理解。
这是我的HTML
<md-autocomplete
md-items="lawyer in cdc.lawyers"
md-selected-item-change="testing(lawyer)"
md-min-length="0"
md-item-text="lawyer.name"
md-search-text="cdc.lawyerSearchText"
md-search-text-change="cdc.triggerQuery(cdc.lawyerSearchText);"
placeholder="Search for lawyer">
<md-item-template>
<span md-highlight-text="cdc.lawyerSearchText" md-highlight-flags="^i">{{lawyer.name}}</span>
</md-item-template>
<md-not-found>
No states matching "{{lawyer.name}}" were found.
</md-not-found>
</md-autocomplete>
这是javascript
this.lawyerSearchText = '';
this.triggerQuery = function(query){
console.log(query);
this.lawyerSearchText = query;
}
它会显示所有lawyers
,但如果我在输入中键入乱码,则不会过滤它们。
我在这里做错了什么?
答案 0 :(得分:2)
我通过过滤函数传递列表的填充,因此md-items
将是:
md-items="lawyer in cdc.triggerQuery(cdc.lawyers")
然后我通常会进行$ http调用来检索那里的过滤列表,但在你的情况下我认为你的triggerQuery函数会返回过滤后的数组。类似的东西:
this.triggerQuery = function(query){
return this.lawyers.filter( function(lawyer) { return lawyer.indexOf(query)>-1) })
}
但是在使用查询的地方,我使用自动完成绑定的ng-model
值。如果这还不足以发布控制器的所有相关部分,我可以扩展它。