1

在类型前面下拉菜单中选择一个项目后,输入字段会反映项目的值(现在是绑定模型的值)。我将如何去使用标签输入值。在我没有看到的typeahead指令中是否有支持?输入字段在选择后显示模型值而不是标签

我的表达:

person.id as person.name for person in persons 

我已经使用预输入输入格式器使用也尝试过,但只有拥有$模型(值)可用的属性,而不是标签。

Plunker http://plnkr.co/edit/OylBlT5KxNvKtTHac61f?p=preview

回答

1

我可能会用稍微不同的意图的typeahead。我意识到,一个更好的方法是绑定键入垃圾(未使用)财产,并利用像<input ... typeahead-on-select="realBinding = $item.id">

1

我与你plnkr试图

您可以更改语法预输入像下面

> <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。

它正在工作,让我知道你是否仍然面临问题。

+0

我想分配给我的模型的值应该是person.id。 – Rell 2014-09-02 07:59:30

+0

@Rob,这是typeahead如何工作的方法,如果您将personaid设置为person.id作为person.name,当您使用rob进行搜索时,它会根据您的姓名进行搜索,但是当您选择该项目时将值返回给模型,因为在语法中,person.id将返回模型。你能告诉我你需要id的原因是什么? – 2014-09-02 08:48:46

0

改变你的表达 person.name作为person.name的人在人

如果您有显示下拉列表,而不是ID,也选择后名字命名,在模型你必须表明名称只要。 然后你可以使用这个表达式
person.name person for person 在这里,你不需要在你的表达式中定义persion.id。

0

这不是它是如何工作的。

你可以这样做:在你的控制器

<input type="text" ng-model="name" placeholder="start typing..." typeahead-on-select="itemSelected($item, $model, $label)" typeahead="person.name for person in people"> 

然后,定义上选择回调函数:

$scope.itemSelected = function(item, model, label){ 
    $scope.user_id = item.id; 
}; 

基本上,当你传递对象的预输入,就可以选择要在文本框中显示的值,但不是隐藏的ID。与select控件不同,文本框不具有值和仅标注值。

相关问题