的AngularJS全局变量的正确姿势是由行动范围监测
如果你只是想知道结论:美元美元(美元rootscope.xxx范围看,功能(newval,oldval){
做某事
})
立刻有人问为什么不:
rootscope美元。美元的手表(XXX
做某事
})
从我最近的错误,说为什么它采取第一种方式。
逻辑如图,一开始我的写作rootscope美元。美元的美元因为AngularJS看rootscope有效尽快注册。我的全局变量是订单信息。也就是说,不同的控制器已经改变了他。每一次改变会触发rootscope美元。美元的手表进入其他控制器,你可以看看播出rootscope美元美元作为一个整体。
事实上,这不是唯一的检查角度源代码的方法,不难找到手表的方法,源代码不分为以下代码:
返回函数deregisterwatch(){
如果(arrayremove(阵列,守望者)> = 0){
incrementwatcherscount(范围,1);
}
lastdirtywatch = null;
};
这段代码告诉我们手动清理表是可行的:
无功者= rootscope美元。美元的手表(XXX),功能({ });
手动删除监视程序
观察者();
这很简单。上述方法也可用于观察范围。
当我在这里学习的时候,我觉得有一个小问题。我将被清理在$范围内吗所以调用,继续转源代码,我发现了下面的代码:
侦听器和/禁用侦听器,应用摘要方法
这一美元的破坏=,=这消化美元。美元=这申请。evalasync美元=这applyasync美元=空;
This.$on = this.$watch = this.$watchGroup = function () {
返回空;
};
这个$ $监听器= {;
上面的代码是本文AngularJS全局变量听众正确的姿势。我希望你能帮助我。