选择的初始值未在AngularJS中设置

csh*_*olk 5 angularjs

在AngularJS 1.3应用程序中,我有一个表单,我从后端异步获取模型和选择控件的可能值.当我在使用值之前获得模型值时ng-options,在选择控件中不会选择任何选项.我设法重现了这种行为:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope, $timeout) {
  $scope.model = { value: 101 };

  $timeout(function() {
    $scope.model.values = [100, 101, 102, 103];
  }, 1000);

});
Run Code Online (Sandbox Code Playgroud)

视图:

Options: <select ng-model="model.value"
      ng-options="v for v in model.values">
      <option value="">Select some...</option>
    </select>
Run Code Online (Sandbox Code Playgroud)

超时模型具有旧值101但未选择任何选项.目前我通过使用ng-if="model.values"select 来找到解决方法,但我觉得应该有更好的方法来做到这一点.

有人可以解释为什么没有选择选项吗?

Plunkr:http://plnkr.co/edit/4opZRJzdDfJhSNJx8RMF

编辑:我在Firefox中打开了Plunkr,然后我开始工作,然后我回到Chrome,它看起来不像crossbrowser问题......

Max*_*tin 0

我同意@PrimosK 关于这个问题的观点。

解决方案是添加跟踪:

 ng-options="v for v in model.values track by v" 
Run Code Online (Sandbox Code Playgroud)

示例中Plunker