小编mel*_*son的帖子

AngularJS 1.4.8 - 当我在选项之前以编程方式设置模型时,选择 - 无限$ digest()循环中的ngOptions在ngOptions中

我从1.2.14迁移到1.4.8时遇到了这种情况.这在1.2.14中工作正常,但我在1.4.8中获得了无限的$ digest()循环.这是一个小提琴,展示了这个问题.小提琴比这篇文章更容易看,但是SO让我包括代码

我有一个select看起来像这样的元素:

<select ng-model="selectedId" ng-options="opt.id as opt.label for opt in getOptions()">
Run Code Online (Sandbox Code Playgroud)

我的选项是对象,如下所示:

$scope.options = [ { id: 1, label: 'one' }, { id: 2, label: 'two' } ];
Run Code Online (Sandbox Code Playgroud)

我想给出ngOptions指令的选项数组取决于条件; 有时我只是想给它$scope.options,但有时我想包括另一个选项.

$scope.getOptions = function() {
    if ($scope.showThirdOption)
        return [{ id: 3, label: 'three' }].concat($scope.options);
    else
        return $scope.options;
};
Run Code Online (Sandbox Code Playgroud)

现在,如果我以编程方式将我的模型设置为3:

...
$scope.selectedId = 3;
...
Run Code Online (Sandbox Code Playgroud)

......即使该选项不存在,Angular也不会感到沮丧.它只是<option><select>元素添加一个节点:<option value="?" selected="selected"></option>下拉列表中的选定值显示为空白.

但是,如果我然后设置我的状态st我的getOptions()返回另外的选项:

...
$scope.selectedId = 3;
$scope.showThirdOption = …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs ng-options angularjs-ng-model

7
推荐指数
1
解决办法
991
查看次数