Angularjs毁灭不起作用

时间:2015-04-04 04:47:13

标签: angularjs destroy

http://plnkr.co/edit/UfQJU661pQR0DMY3c61t?p=preview

我从AngularJs站点获得了上面的代码,只有我添加了一个按钮来删除我们有控制器的Div,但是在删除之后没有调用destroy方法,因为我已经在Directive和Controller中设置了警报。

element.on('$destroy', function() {
alert('destroy directive interval');
$interval.cancel(stopTime);
});

 $scope.$on('$destroy', function() {
alert('destroy controller interval');
// Make sure that the interval is destroyed too
$scope.stopFight();
});

请建议。

由于

2 个答案:

答案 0 :(得分:0)

你是在角度的背景之外做的。

<button id="btn" onclick="DeleteMainDiv()">DeleteDiv</button>

所以在DeleteMainDiv()函数

 function DeleteMainDiv() {
      alert('Controller div going to remove');
      //debugger;
      var scope = angular.element(document.getElementById("mainDiv")).scope();
      $('#mainDiv').remove();
      scope.$destroy();
    }

这将触发销毁功能。

但我认为不需要它。当路由更改或指令不再需要时,Angular将自动运行$destroy事件处理程序。

<强> DEMO

答案 1 :(得分:0)

需要注意的主要事项

执行element.remove()时,该元素及其所有子元素将从DOM中删除,所有事件处理程序都将通过例如element.on附加。

它不会破坏与元素关联的$ scope。

所以你需要手动触发范围。$ destroy();

首先得到元素的范围: -

 var scope = angular.element(document.getElementById("mainDiv")).scope();

第二个从dom中删除元素: -

$('#mainDiv').remove();

第三次手动销毁范围: -

 scope.$destroy();

Plunker