Angular typeahead:如何将标签与模型分开?

时间:2016-05-31 05:38:28

标签: javascript angularjs angular-ui-typeahead

我在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

1 个答案:

答案 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,否则返回所选对象中的值。