2013-04-16 37 views
20

我有以下AngularUI-Bootstraptypeahead偉大的工作:極限角UI,引導到事先鍵入的內容特定對象財產

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

雖然,它幾乎工作大。我可以爲typeahead顯示stuffs.name,並在stuffs中選擇完整的stuff對象。問題是我的$viewValue匹配stuff中的所有屬性,而不僅僅匹配stuff.name。我試過在typeahead的不同地方加入.name,但沒有運氣。有沒有簡單的方法來顯示和匹配只有.name但仍然返回整個對象?

回答

38

http://angular-ui.github.io/bootstrap/回購協議中的typeahead指令適用於現有的AngularJS生態系統。這意味着該指令試圖儘可能多地重用已經在AngularJS中使用的語法,過濾器和指令。

回到你的問題 - 本身是由這裏所描述的角的過濾器過濾器進行過濾: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

+0

非常感謝您!我發誓我一直在嘗試RTFM,但我想我會有一個繼續。 – Jesse

+0

我沒有看到'filter:{name:$ viewValue}' 的區別我試着將它改爲'filter:$ viewValue',輸出結果是一樣的。 –

+0

@SaadFarooq當您更改語法t'filter:$ viewValue'時,角度基本上會從對象中創建一個JSON字符串並對其進行搜索。語法pkozlowski只用於搜索名稱字段。在上面的Plnkr上使用單詞「second」進行測試。它在名稱字段中沒有出現。如果你按照你的建議編輯它,那麼「秒」會顯示第二個結果。 – jklemmack

相關問題