Betrachten Sie die folgende plunker
Hier ist die html
<div ng-repeat="(id, testOject) in filterList()">
<div ng-if="testOject['state']">
{{testObject}}
</div>
</div>
ist hier der relevante js
$scope.test = {
'1': {'state': true, 'label': '1'}
}
$scope.filterList = function() {
var map = {};
for (var key in $scope.test){
if($scope.test[key]['state']) {
map[key] = {
'state': $scope.test[key]['state'],
'label': $scope.test[key]['label']
}
}
}
return map;
};
Der obige Code verursacht 10 $digest() iterations reached
Fehler.
Allerdings, wenn wir die code ein bisschen ändern.
$scope.filterList = function() {
var map = {};
for (var key in $scope.test){
if($scope.test[key]['state']) {
map[key] = true
}
}
return map;
};
Der Fehler nicht
Es scheint, wie Änderung tritt Erkennung ausgelöst wird, wenn ein neues key
, die ein ganz neues Objekt enthalten wird aktualisiert, aber ich habe nur ein Objekt im Wörterbuch, warum tut es durchschleifen Änderung Erkennung 10 mal?
Digest wird ausgeführt, während sich der Bereich ändert. Der Filter sollte dieselben Objekte/Arrays zurückgeben, wenn die Daten bereits gefiltert, nicht neu erstellt wurden. –