Угловой шрифт: как отделить метку от модели?

Я использую typeAheads из angular-ui в сетке пользовательского интерфейса. Кажется, существует неявная связь между меткой в ​​uib-typeahead и ng-моделью.

<input type="text" ng-model="selected" uib-typeahead="country as country.id for country in countrys | filter:$viewValue" typeahead-on-select="onSelect($item, $model, $label)" class="form-control">

В этом случае country.id указывает, что значение, отображаемое во входных данных после выбора, равно selected.id. Но это не определено явно.

Однако, если selected не имеет поля с именем id, это приводит к отображению ввода [Object object].

Могу ли я отделить модель от того, что отображается, и от этикетки?

Вот небольшой плунжер. Я хочу, чтобы ввод отображал идентификатор, но я хочу, чтобы ввод отображал значение модели. http://plnkr.co/edit/EnOefFQVcTBoaHxiCc5I?p=preview

РЕДАКТИРОВАТЬ: я изменил планку, чтобы лучше отразить мою проблему. Если я установлю для ng-model значение selected.value, вначале я получу хороший результат, но если я изменю значение, я получу вложенный JSON в selected.value. >


person Chippen    schedule 31.05.2016    source источник


Ответы (1)


uib-typeahead="country as country.value for country in countrys | filter:$viewValue"

Вы должны использовать typeahead, как это, чтобы лучше понять ваш typeahdead. Однако, если вы все еще хотите использовать это с идентификатором, вы можете использовать input-formatter. Этот атрибут typehead определяет, как отображается выбранный вами объект.

function(ojb) {
return obj.id ? obj.id : obj.value;
}

Вы вернете идентификатор, если он есть, в противном случае вы вернете значение в выбранном объекте.

person aurelien974    schedule 02.06.2016