Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了当我调用element.remove时,为什么没有$destroy触发?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我不知道为什么在以下示例中没有触发$ destroy事件。有人可以解释为什么它不被触发,在什么情况下会被触发?

这是plunkr:http://plnkr.co/edit/3Fz50aNeuculWKJ22iAX?p=preview

JS

angular.module('testMod',[])
.controller('TESTCtrl',function($scopE){
  $scope.removeElem = function(id) {
    var elem = document.getElementById(id);
    angular.element(elem).remove();
  }
}).directive('testDir',[function() {
  return {
    scope:true,link: function(scopE) {
      console.log('in directive');
      scope.$on('$destroy',function(){
        alert('destroyed');
      })
    }
  }
}]);

HTML

<body ng-controller='TESTCtrl'>
  <div testDir id='test'>I will be removed.</div>
  <button ng-click='removeElem('test')'>remove</button>
</body>
问题是你在监听范围上的$ destroy事件,但元素上触发了$ destroy。

来自angular.js源(我确定它在网站的某个地方记录,但是我没有看)

你的指令应该是(注意我添加了scope,element和attrs作为链接参数):另外,这里是一个plunker

directive('testDir',link: function(scope,element,attrs) {
      console.log('in directive');
      element.on('$destroy',function(){
        alert('destroyed');
      })
    }
  };
}]);

大佬总结

以上是大佬教程为你收集整理的当我调用element.remove时,为什么没有$destroy触发?全部内容,希望文章能够帮你解决当我调用element.remove时,为什么没有$destroy触发?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。