我有这段代码。从逻辑上讲,这应该进入无限的渲染循环。但它保持稳定,输出结果是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-如果创建一个新的范围,所以他们不是指到同一个实例 –