Как сделать значение ng-модели, заданное значением ui-select
В настоящее время я использую angular -ui/ui-select в своем проекте. Я могу связать значение ui-select с объектом без проблем, однако он связывает весь item
, который выполняется итерацией. Я хотел бы привязываться только к item.codeId
, это позволило бы мне сохранить правильные данные, а также отобразить правильное значение в раскрывающемся списке при загрузке страницы.
Как настроить ui-select для этого?
<ui-select ng-model="myObject.stateCode" id="stateCode">
<ui-select-match placeholder="Select a state...">{{$select.selected.codeDescription}}</ui-select-match>
<ui-select-choices repeat="item in constants.states | filter: $select.search" value="{{$select.selected.codeId}}">
<div ng-bind-html="item.codeDescription | highlight: $select.search"></div>
<small ng-bind-html="item.codeId | highlight: $select.search"></small>
</ui-select-choices>
</ui-select>
Ответы
Ответ 1
Ваш код в порядке, но произошла ошибка, вызвавшая это при использовании дочернего массива (константы .states).
Я просто исправил эту проблему на https://github.com/angular-ui/ui-select/pull/131, в частности эту фиксацию
Выпущена новая версия v0.5.1.
Если вы используете беседку, просто запустите bower update
.
Ответ 2
Я верю, что вам нужно будет использовать предложение repeat=
и избавиться от свойства value. Пример:
http://plnkr.co/edit/htm8UNxVOlC076LVVezE?p=preview
Кого я вроде скопировал из:
https://github.com/angular-ui/ui-select/blob/master/examples/demo-bind-to-single-property.html
<ui-select ng-model="myObject.stateCode" id="stateCode">
<ui-select-match placeholder="Select a state...">{{$select.selected.codeDescription}}</ui-select-match>
<ui-select-choices repeat="item.codeId as item in constants.states | filter: $select.search">
<div ng-bind-html="item.codeDescription | highlight: $select.search"></div>
<small ng-bind-html="item.codeId | highlight: $select.search"></small>
</ui-select-choices>
</ui-select>