$scope.$watch ステートメント内から ng-options を設定すると、問題が発生します。
以下の作品:
<select ... ng-options="x.val as x.id for x in options"></select>
しかし、これはしません:
<select ... ng-options="x.val as x.val for x in options"></select>
Plunker に問題が表示されます -- [更新オプション] をクリックします
モデルの値がオプションの前に設定され、ラベルと値が等しい場合、モデルは使用可能なオプションと一致しません。
これはバグですか、それとも何か間違っていますか?
サンプル コントローラ コード:
$scope.myModel = 'Two';
$scope.$watch('loadTrigger', function(newValue, oldValue) {
if (newValue == oldValue) { return; }
$scope.options = [{id: 1, text: 'One'}, {id: 2, text: 'Two'}...];
})
サンプル ビュー:
<select ng-model="myModel" ng-options="x.text as x.text for x in options">...</select>
監視がトリガーされ、オプションが更新されると、選択すると、予想される「2」ではなく、空白またはデフォルトのオプションが表示されます。ただし、ラベルと値が (わずかでも) 異なる場合、すべてが期待どおりに機能します