68

スコープの $destroy イベントの例を教えてください。http://docs.angularjs.org/api/ng.$ro​​otScope.Scope#$destroyのリファレンス ドキュメントは次のとおりです。

$destroy()

親スコープから現在のスコープ (およびそのすべての子) を削除します。削除は、$digest() への呼び出しが現在のスコープとその子に伝播されなくなることを意味します。削除は、現在のスコープがガベージ コレクションの対象であることも意味します。

$destroy() は通常、ループの展開を管理するために ngRepeat などのディレクティブによって使用されます。

スコープが破棄される直前に、このスコープで $destroy イベントがブロードキャストされます。アプリケーション コードは、必要なクリーンアップを実行する機会を与える $destroy イベント ハンドラーを登録できます。

4

2 に答える 2

107

デモ: http: //jsfiddle.net/sunnycpp/u4vjR/2/

ここでは、handle-destroyディレクティブを作成しました。

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メソッドとイベントの 2 つを参照できます。

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 に答える