68

有人可以提供范围的 $destroy 事件的示例吗?这是来自http://docs.angularjs.org/api/ng.$ro​​otScope.Scope#$destroy的参考文档

$销毁()

从父作用域中移除当前作用域(及其所有子作用域)。移除意味着对 $digest() 的调用将不再传播到当前作用域及其子作用域。删除还意味着当前范围有资格进行垃圾收集。

$destroy() 通常由诸如 ngRepeat 之类的指令用于管理循环的展开。

就在作用域被销毁之前,会在该作用域上广播 $destroy 事件。应用程序代码可以注册一个 $destroy 事件处理程序,这将使它有机会执行任何必要的清理。

4

2 回答 2

107

演示:http: //jsfiddle.net/sunnycpp/u4vjR/2/

在这里,我创建了句柄销毁指令。

ctrl.directive('handleDestroy', function() {
    return function(scope, tElement, attributes) {        
        scope.$on('$destroy', function() {
            alert("In destroy of:" + scope.todo.text);
        });
    };
});
于 2013-01-19T17:30:42.970 回答
20

$destroy可以参考两件事:方法和事件

1. 方法 - $scope.$destroy

.directive("colorTag", function(){
  return {
    restrict: "A",
    scope: {
      value: "=colorTag"
    },
    link: function (scope, element, attrs) {
      var colors = new App.Colors();
      element.css("background-color", stringToColor(scope.value));
      element.css("color", contrastColor(scope.value));

      // Destroy scope, because it's no longer needed.
      scope.$destroy();
    }
  };
})

2. 事件 - $scope.$on("$destroy")

请参阅@SunnyShah 的回答

于 2015-09-30T18:04:14.543 回答