将Angular UI-Bootstrap Typeahead限制为特定对象属性

Jes*_*sse 20 angularjs angular-ui-bootstrap

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

<input class="span2" type="text" ng-model="selectedStuff" typeahead="stuff as stuff.name for stuff in stuffs | filter:$viewValue"/>
Run Code Online (Sandbox Code Playgroud)

虽然,它几乎工作太好了.我能够显示出AND stuffs.name的目的typeahead,选择完整的stuff对象stuffs.问题是我$viewValue匹配所有属性stuff而不仅仅是stuff.name.我试过把它添加.name到各个地方typeahead,没有运气.是否有一种直接的方式来显示和匹配.name但仍然返回整个对象?

pko*_*rce 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}"
Run Code Online (Sandbox Code Playgroud)

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

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