我有這段代碼。從邏輯上講,這應該進入無限的渲染循環。但它保持穩定,輸出結果是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;
}
]);
})();
NG-如果創建一個新的範圍,所以他們不是指到同一個實例 –