md-autocomplete不过滤?

时间:2016-06-08 20:17:02

标签: angularjs autocomplete angular-material

我正试图让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,但如果我在输入中键入乱码,则不会过滤它们。

enter image description here

我在这里做错了什么?

1 个答案:

答案 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值。如果这还不足以发布控制器的所有相关部分,我可以扩展它。