选择后,输入字段显示模型值而不是标签

时间:2014-09-02 06:25:24

标签: angularjs twitter-bootstrap angular-ui-bootstrap bootstrap-typeahead

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

我的表情:

person.id as person.name for person in persons

我也尝试过使用typeahead-input-formatter,但只有$ model(value)属性可用,而不是标签。

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

4 个答案:

答案 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控件不同,文本框不具有值和标签 - 仅限值。