2016-05-31 60 views
0

我在UI網格中使用angular-ui中的typeAheads。 uib-typeahead和ng-model之間的標籤似乎存在隱式關聯。Angular typeahead:如何從模型中分離標籤?

<input type="text" ng-model="selected" uib-typeahead="country as country.id for country in countrys | filter:$viewValue" typeahead-on-select="onSelect($item, $model, $label)" class="form-control"> 

在這種情況下country.id決定了在選擇之後的輸入顯示的值是selected.id。但是這並沒有明確的定義。

但是,如果選擇沒有名爲id的字段,則會導致輸入顯示[Object object]。

我可以從顯示內容和標籤中分離模型嗎?

這是一個小笨蛋。我希望typeahead列出id,但我希望輸入顯示模型的值。 http://plnkr.co/edit/EnOefFQVcTBoaHxiCc5I?p=preview

編輯:我改變了重拳,以更好地反映我的問題。如果我設置NG-模型selected.value我會得到一個好的結果的開始,但如果我改變的價值,我會在selected.value得到一個嵌套的JSON

回答

1
uib-typeahead="country as country.value for country in countrys | filter:$viewValue" 

你應該使用這種類型來更好地理解你的typeahdead。 但是,如果您仍然希望將此與id一起使用,則可以使用輸入格式化程序。 typehead的這個屬性定義了你所選對象的顯示方式。

function(ojb) { 
return obj.id ? obj.id : obj.value; 
} 

如果有ID,您將返回ID,否則返回所選對象的值。

+0

非常好,這解決了我的問題! – Chippen