如果我在 $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>
似乎如果模型的值是在选项之前设置的,并且标签和值是等效的,那么模型将不会匹配任何可用的选项。
这是一个错误,还是我做错了什么?
示例控制器代码:
$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>
当手表触发并且选项更新时,选择将显示空白或默认选项,而不是预期的“两个”。但是,如果标签和值不同(甚至略有不同),一切都会按预期工作