为什么我选择的值从控制器复制时不更新



我有一个使用ng-modelng-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>

最新更新