infdig errors - 具有动态创建的数组的AngularJS ng-options

时间:2014-07-11 19:53:13

标签: angularjs ng-options

我有一个使用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一起使用的数组是动态的,而不是静态的,但我不知道如何解决这个问题,因为这里的数组值必须动态改变。

希望这对我试图描述的内容有意义。

1 个答案:

答案 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>