私はこのコードを持っています。論理的には、これは無限レンダーループに入るはずです。しかし、それは安定しており、出力はa
とb
で、両方とも一緒に印刷されます。なぜこれが無限ループにならないのですか?
<div ng-if='hello'>
<span ng-init='hello=false'>a</span>
</div>
<div ng-if='!hello'>
<span ng-init='hello=true'>b</span>
</div>
これは私が取り組んでいるものの一部ではありません。それはちょうど私の頭の中にポップアップし、私はこれに答えを見つけることができませんでした。
編集
私は上記の例では@dfsqが指摘するようにということを理解し、ng-if
は新しいスコープを作成します。だから私はコードを少し変更しましたthis example。したがって、ここでは両方ともng-if
は同じオブジェクトを参照する必要があります。なぜここにループしていないのですか?
HTML
<div ng-app='app'>
<div ng-controller='appCtrl'>
<div ng-if='object.hello'>
<span ng-init='object.hello=false'>a</span>
</div>
<div ng-if='!object.hello'>
<span ng-init='object.hello=true'>b</span>
</div>
</div>
</div>
JS
(function() {
var app = angular.module("app", []);
app.controller("appCtrl", [
"$scope",
function($scope) {
$scope.object = {};
$scope.object.hello = true;
}
]);
})();
を参照しているわけではありません同じインスタンスに –