从控制器复制时,为什么我的选定值未更新?

时间:2015-05-27 09:55:53

标签: javascript angularjs drop-down-menu

我使用<select>ng-model来控制ng-options

 <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。但其他因素恰当地反映了这种变化。

我做错了什么?

我创建了一个小提琴there

1 个答案:

答案 0 :(得分:0)

//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>