javascript – 你需要在$scope $destroy事件中取消绑定$scope.$on?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 你需要在$scope $destroy事件中取消绑定$scope.$on?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1553字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 你需要在$scope $destroy事件中取消绑定$scope.$on?](/upload/InfoBanner/zyjiaocheng/705/dc8e5c3c0ba843b08aa8991d82dcded0.jpg)
我有使用$on绑定事件的指令我是否需要在范围被销毁时删除该绑定,还是自动完成?我还需要调用$element.off吗?
return {
restrict: 'A',
link: function($scope, $element, $attrs) {
$element.on('load', function() {
$element[0].contentWindow.focus();
});
$scope.$on('iframe:focus', function() {
$element[0].contentWindow.focus();
});
}
};
解决方法:
$scope.$on()侦听器由于视图中的E2E绑定而丢失其表示时将自动销毁/清除.请注意,$rootScope.$on()绑定不会发生这种情况.你也可以看看$scope documentation of AngularJS.
用几句话回答:
> $scope.$on();将被自动销毁.
>你需要手动销毁$rootScope.$on().
该文件说:
Scope Destruction – When child scopes are no longer needed , it is the
responsibility of the child scope creator to destroy them via
scope.$destroy() API. This is done in order to stop propagation of
$digest calls into the child scope and allow for memory used by the
child scope models to be reclaimed by the garbage collector.
如何销毁$rootScope的示例.$on():
//bind event
var registerScope = $rootScope.$on('someEvent', function(event) {
console.log("fired");
});
// clean up
$scope.$on('$destroy', registerScope);
这个plnkr将向你展示$scope的一些不同行为.$on()和$rootScope.$on().
通过切换此plunkr中的视图,控制器将被重新绑定到您的视图. $rootScope.$on();每次切换视图时都会绑定事件,而不会破坏之前视图的事件绑定.这样,$rootScope.$on()侦听器将被堆叠/相乘.这不会发生在$scope.$on()绑定上,因为它将通过切换视图来销毁(在DOM中丢失E2E绑定表示).
注意:
> $scope.$on(‘event’);将听$scope.$broadcast(‘event’)& $rootScope.$广播( ‘事件’)
> $rootScope.$on(‘event’);只会听$rootScope.$broadcast(‘event’)
内容总结
以上是互联网集市为您收集整理的javascript – 你需要在$scope $destroy事件中取消绑定$scope.$on?全部内容,希望文章能够帮你解决javascript – 你需要在$scope $destroy事件中取消绑定$scope.$on?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。