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控件不同,文本框不具有值和僅標註值。

相關問題