gpt4 book ai didi

javascript - 如何在 Angular 中取消绑定(bind) $on?

转载 作者:可可西里 更新时间:2023-11-01 02:29:04 28 4
gpt4 key购买 nike

我有一段代码在 init 上使用了一次 $scope.$on ,然后在一个函数中,所以代码被执行了多次。如果在我再次绑定(bind)之前先解除绑定(bind),我该如何解除绑定(bind)。我试过 $scope.$off 但没有这样的功能,https://docs.angularjs.org/api不要说$on。我正在使用 Angular 1.0.6。

最佳答案

如果您不取消注册该事件,您将发生内存泄漏,因为您传递给 $on 的函数将不会被清除(因为对它的引用仍然存在)。更重要的是,在其范围内函数引用的任何变量也将被泄漏。如果您的 Controller 在应用程序中多次创建/销毁,这将导致您的函数被多次调用。幸运的是,AngularJS 提供了一些有用的方法来避免内存泄漏和不需要的行为:

  • $on 方法返回一个函数,可以调用该函数来注销事件监听器。
  • 每当一个作用域在 Angular 中被清理(即一个 Controller 被销毁)时,一个 $destroy 事件就会在该作用域上被触发。您可以注册到 $scope 的 $destroy 事件并从中调用您的 cleanUpFunc。

查看文档

示例代码:

   angular.module("TestApp")
.controller("TestCtrl",function($scope,$rootScope){
var cleanUpFunc = $scope.$on('testListener', function() {
//write your listener here
});

//code for cleanup
$scope.$on('$destroy', function() {
cleanUpFunc();
};
})

关于javascript - 如何在 Angular 中取消绑定(bind) $on?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23424381/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com