我有一个使用ng-repeat的表,其中有一个使用ng-options的选项:
<tr ng-repeat="variable in variables">
<td>
<textarea ng-model="variable.extras">{{variable.extras}}</textarea>
</td>
<td>
<select ng-model="variable.condition" ng-options="text for text in toplevelTriggerConditions($index)">
</td>
对于select,toplevelTriggerConditions($index)
调用基本上遍历表的前一行,查找各种条件,如果它们通过抓取前一行variable.extras
的值,则返回一个数组基于此。因此,如果我把'一,二,三'加入,那么select有一个,两个和三个选项。
从视觉上看,这似乎工作正常,但我收到了大量$scope.infdig
错误。通过谷歌搜索我看到它是因为与ng-options一起使用的数组是动态的,而不是静态的,但我不知道如何解决这个问题,因为这里的数组值必须动态改变。
希望这对我试图描述的内容有意义。
答案 0 :(得分:0)
我发现了一个与此描述相符的已记录错误,我认为建议的修复方法是升级到Angular 1.4。*。
这是问题所在。 https://github.com/angular/angular.js/issues/9464
以下是测试此问题的plunker。 http://plnkr.co/edit/Q4EZDPCyAgUMKoWDPmrE?p=preview
在我的情况下,我为每个ng-option返回相同的对象,除了我在返回它之前在函数中对它进行排序。 Angular不喜欢这个,所以我使用了这个SO问题AngularJS ngOptions sort array中的角度滤波器。
<tr ng-repeat="phv in placeHolderValues>
<td>
<select ng-model='phv.placevalueId'
ng-options="t.id as t.name for t in valueOptions(phv) | orderBy:'toString()' ">
</select>
</td>
</tr>