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

时间:2015-09-23 17:23:03

标签: angularjs

在AngularJS 1.3应用程序中,我有一个表单,我从后端异步获取模型和select控件的可能值。当我在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);

});

视图:

Options: <select ng-model="model.value"
      ng-options="v for v in model.values">
      <option value="">Select some...</option>
    </select>

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

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

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

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

2 个答案:

答案 0 :(得分:1)

看起来这是AngularJs 1.3.x中的regression

您提供的示例在AngularJs 1.2.x和1.4.x中运行良好。

答案 1 :(得分:0)

我同意@PrimosK关于问题。

解决方案是添加跟踪:

 ng-options="v for v in model.values track by v" 

Plunker

中的示例