私は次のようng-repeatに考えています。
<div ng-repeat="field in fields">
{{field.someValue}}
</div>
のコンテンツは、ビューに渡さfieldsれる前にある必要があります。preprocessedしたがって、コントローラーには、オブジェクトをループしてfieldsいくつかのキーを追加し、いくつかのキーを削除する関数があります。単純化された擬似コードは次のようになります
myApp.controller('FieldsController', function($scope) {
$scope.fields = loadFieldsFromResource();
var i=0;
for(i = 0; i < $scope.fields.length; i++) {
if ($scope.fields[i].someProperty > maxValue) {
// Remove an item from the array
$scope.fields.splice(i,1);
}
else if ($scope.fields[i].someProperty < minValue) {
// Add an item to the array
$scope.fields.splice(i,0,createNewField());
}
}
})
これで正しい出力が生成されますが、10 $digest() iterations reached.エラーが発生します。どうすればそれを機能させることができますか?( init で行う前処理のみが必要です)。
fieldswithangular.copy()を一時変数にコピーしようとしました。前処理を行ってから変数に割り当てfieldsますが、それでも同じエラーが発生します。
preprocessingビューに与える前に、Angularウォッチの外でこの種のことを行う方法はありますか?