現在、プロジェクトで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>
あなたのコードは問題ありませんが、子配列(constants.states)を使用するときにこれを引き起こすバグがありました。
https://github.com/angular-ui/ui-select/pull/131 でこの問題を修正しました、具体的には this commit
新しいバージョン v0.5.1 がリリースされました。 bowerを使用している場合は、bower update
。
あなたがすることは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>