当前位置:   article > 正文

不要忘记监听$destroy事件来清除timer_timer.destory

timer.destory

angularjs会广播一个$destroy的事件在销毁scope和其父对象被删除时。

在做一些清除的任务或资源的时候,监听这个事件就变得非常的关键,否则就可能消耗内存和CUP.

下面是一个有问题的情况:

  1. module.controller("TestController", function($scope, $timeout) {
  2. var onTimeout = function() {
  3. $scope.value += 1;
  4. $timeout(onTimeout, 1000);
  5. };
  6. $timeout(onTimeout, 1000);
  7. $scope.value = 0;
  8. });

下面是正确的情况:

  1. module.controller("TestController", function($scope, $timeout) {
  2. var onTimeout = function() {
  3. $scope.value += 1;
  4. timer = $timeout(onTimeout, 1000);
  5. };
  6. var timer = $timeout(onTimeout, 1000);
  7. $scope.value = 0;
  8. $scope.$on("$destroy", function() {
  9. if (timer) {
  10. $timeout.cancel(timer);
  11. }
  12. });
  13. });


关注微信公众号:前端开发知识


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/222795
推荐阅读
相关标签
  

闽ICP备14008679号