Как сделать значение 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>