Javascript 为什么这不会导致无限循环?
我有这段代码。从逻辑上讲,这应该进入无限渲染循环。但它保持稳定,输出是Javascript 为什么这不会导致无限循环?,javascript,angularjs,angular-ng-if,Javascript,Angularjs,Angular Ng If,我有这段代码。从逻辑上讲,这应该进入无限渲染循环。但它保持稳定,输出是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> JS 从逻辑上讲,这应该进入无限渲染循
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>
JS
从逻辑上讲,这应该进入无限渲染循环
不,不应该。指令创建新的子作用域,并因此修改(创建)独立标志,该标志不影响ngIf中使用的标志(父作用域
hello
)。如@dfsq menced所述,如果创建新作用域,则应使用如下内容:
<div ng-if='hello'>
<span ng-init='$parent.hello=false'>a</span>
</div>
<div ng-if='!hello'>
<span ng-init='$parent.hello=true'>b</span>
</div>
A.
B
ng如果创建了一个新的作用域,那么它们不会引用相同的InstanceHanks。我已经用代码笔链接更新了我的问题。为什么它仍然稳定?
(function() {
var app = angular.module("app", []);
app.controller("appCtrl", [
"$scope",
function($scope) {
$scope.object = {};
$scope.object.hello = true;
}
]);
})();
<div ng-if='hello'>
<span ng-init='$parent.hello=false'>a</span>
</div>
<div ng-if='!hello'>
<span ng-init='$parent.hello=true'>b</span>
</div>