Ich bin mit einem seltsamen Problem in Angular 1 konfrontiert, die das Skript in Endlosschleife geht und schließlich der Browser hängt. Hier
ist, was ich versuche
<script>
$scope.A = true;
$scope.B = [{blah},{blah}];
$scope.updateB = function(){
$scope.B.push({blah});
}
$scope.D = function(key){
$scope.A = false;
return key.name;
}
</script>
<div ng-if="A">
<button ng-click="updateB()"></button>
</div>
<div ng-repeat="key in B">
{{D(key)}}
</div>
Also im Grunde tun möchte ich zuerst div verstecken, nachdem die Taste gedrückt wird. Ich weiß, ich kann es in "updateB" -Funktion tun. Aber nein, ich möchte das in "D" machen, nachdem der Ausdruck ausgewertet wurde. Es geht in eine Endlosschleife.
Kann mir jemand vorschlagen, was hier schief läuft?
@estus Wenn ich B aktualisieren, wird der Ausdruck ausgewertet und D() wieder und schließlich $ scope.A = false aufgerufen werden . Was ist das Problem in diesem Fluss? –
Ich denke, das ist das richtige Verhalten. D() wird in jedem Winkelzyklus aufgerufen. Wenn Sie ein oder mehrere Elemente in B haben, wird Ihre Funktion D() aufgerufen. –
Ja, ich verstehe, D wird mehrmals aufgerufen (bis zu Länge von B), aber nicht in Endlosschleife. Das heißt, selbst wenn es nur ein Element in B gibt, wird D wiederholt aufgerufen. –