1

После выбора элемента в раскрывающемся списке typeahead поле ввода отражает значение элемента (теперь значение привязанной модели). Как я могу использовать метку для ввода значения. Есть ли поддержка здесь в директиве typeahead, которую я не вижу?Поле ввода показывает значение модели вместо метки после выбора

Мое выражение:

person.id as person.name for person in persons 

Я также попытался с помощью использования машинописного-ввод-форматировщика, но имеет только $ модели (стоимость) имущества доступных, а не ярлык.

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

ответ

1

Возможно, я использую typeahead с немного разными намерениями. Я понял, что лучшим подходом было бы привязать 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

+0

@Rob, это то, как typeahead работает, если вы даете typeahead = "person.id как person.name для человека в лицах. Когда вы выполняете поиск с помощью rob, он дает вам поиск на основе ваших имен, но когда вы выбираете элемент, он будет верните значение в модель, потому что в синтаксисе person.id вернется к модели. Можете ли вы сообщить мне, в чем причина u id? –

0

Изменить Ваше выражение person.name, как person.name для человека лиц

Если вы должны показать имя в выпадающем списке вместо ID, а также после выбора имени, в модели должны показать имя только. , вы можете использовать это выражение
person.name для лица в лицах Здесь вам не нужно определять 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; 
}; 

В основном, когда вы передаете в объектах в машинописный, вы можете выберите значение, которое будет отображаться в текстовом поле, но не скрытый идентификатор. В отличие от элемента управления select, текстовые поля не имеют значения и значения только для метки.