20

我有以下Angular UI-Bootstrap typeahead工作得很好:

<input class="span2" type="text" ng-model="selectedStuff" typeahead="stuff as stuff.name for stuff in stuffs | filter:$viewValue"/>

不过,它几乎工作太好了。我能够显示stuffs.name用于typeaheadAND 中选择完整stuff对象的目的stuffs。问题是 my$viewValue匹配所有属性,stuff而不仅仅是stuff.name. 我试过在没有运气的情况下将其添加.name到各个地方。typeahead有没有一种直接的方法来显示和匹配,.name但仍然返回整个对象?

4

1 回答 1

38

http://angular-ui.github.io/bootstrap/ repo 中的 typeahead 指令是为了很好地适应现有的 AngularJS 生态系统而构建的。这意味着该指令尝试尽可能多地重用 AngularJS 中已经使用的语法、过滤器和指令。

回到你的问题 - 过滤本身是由这里描述的 Angular 的过滤器过滤器完成的:http ://docs.angularjs.org/api/ng.filter :filter 提到的过滤器的语法足够灵活,可以将搜索限制在选定的一组特性:

typeahead="stuff as stuff.name for stuff in stuffs | filter:{name: $viewValue}"

请注意:filter:{name: $viewValue}

在这里工作:http ://plnkr.co/edit/o1qWKq8LSmbbmVaYkOvb?p=preview

于 2013-04-16T20:17:15.983 回答