在输入前额下拉菜单中选择项目后,输入字段会反映项目的值(现在是绑定模型的值)。我将如何使用标签作为输入值。我在没有看到的typeahead指令中是否有支持?
我的表情:
person.id as person.name for person in persons
我也尝试过使用typeahead-input-formatter,但只有$ model(value)属性可用,而不是标签。
答案 0 :(得分:2)
我可能正在使用具有略微不同意图的typeahead。我意识到更好的方法是将typeahead绑定到垃圾(未使用)属性,并使用<input ... typeahead-on-select="realBinding = $item.id">
答案 1 :(得分:1)
我试过你的plnkr
你可以改变typeahead的语法,如下面的
> <input type="text" ng-model="userId" typeahead="person.name as
> person.name for person in persons | filter : $viewValue" />
typeahead="person.name as person.name for person in persons
将person.id更改为person.name。
它正在运作,如果您仍然遇到问题,请告诉我。
答案 2 :(得分:0)
将表达式更改为 person.name as person. person for person person in persons
如果您必须在下拉列表中显示名称而不是ID,并且在选择名称之后,在模型中您必须仅显示名称。
然后你可以使用这个表达式
person.name for person person in person
在这里,您无需在表达式中定义persion.id。
答案 3 :(得分:0)
这不是它的工作原理。
你可以这样做:
<input type="text" ng-model="name" placeholder="start typing..." typeahead-on-select="itemSelected($item, $model, $label)" typeahead="person.name for person in people">
然后在你的控制器中,定义on-select函数回调:
$scope.itemSelected = function(item, model, label){
$scope.user_id = item.id;
};
基本上,当您将对象传递给typeahead时,您可以选择要在文本框中显示的值,但也不是隐藏ID。与select
控件不同,文本框不具有值和标签 - 仅限值。