我在UI网格中使用angular-ui中的typeAheads。 uib-typeahead中的标签和ng-model之间似乎存在隐式连接。
<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-model设置为 selected.value ,我会在开始时得到一个好结果,但是如果我更改了值,我将在 selected.value
答案 0 :(得分:1)
uib-typeahead="country as country.value for country in countrys | filter:$viewValue"
你应该使用这样的类型来更好地理解你的类型。 但是,如果您仍希望将其与id一起使用,则可以使用input-formatter。这个typehead属性定义了所选对象的显示方式。
function(ojb) {
return obj.id ? obj.id : obj.value;
}
如果有id,您将返回id,否则返回所选对象中的值。