我有一个使用ng-model
和ng-options
控制的<select>
:
<select ng-model="user.option"
ng-options="value.label for (key, value) in data.options">
<option value="">Select value</option>
</select>
选项被分组在一个对象中:
$scope.data.options = {
one: { label: 'one' },
two: { label: 'two' }
};
在某些时候,我想从控制器更改所选选项。如此:
$scope.user.option = $scope.data.options['two'];
然而,在我的上下文中,我维护了一个变量master
,并使用它来设置$scope.user
:
$scope.master.option = $scope.data.options['two'];
$scope.user = angular.copy ($scope.master);
这不起作用:我的<select>
仍然显示Select value
。但其他元素恰当地反映了变化。
我做错了什么?
我在这里创建了一个提琴
//Add track by in ng-options ..check below code
<div ng-app="my-app">
<div ng-controller="MyCtrl">
<select ng-model="user.option"
ng-options="value.label for (key, value) in data.options track by value.label">
<option value="">Select value</option>
</select>
<p>Selected: {{user.option.label}}
</div>
</div>