0

剣道カスタム イベントをバインドするための angularjs のベスト プラクティスがあるかどうかを知りたいです。

列を非表示または表示できる列メニューを備えたグリッドがあります。

列メニューが開いているグリッド

kendo columnHideまたはcolumnShowイベントは、列を非表示/表示するためにチェック/チェックを外すたびに発生します。

私のディレクティブには、そのイベントをキャプチャする次のコードがあります。これがこれらのイベントをバインドする最善の方法であるかどうか、および潜在的なメモリの問題があるかどうか (たとえば、これらのイベントのバインドを解除する必要があるかどうか) を知りたいです。

angular.module('sgComponents').directive('sgGrid', [

   link: function (scope, elm, attrs, ctrls) {

      kendoGrid = elm.data('kendoGrid'); // the grid

      kendoGrid.bind('columnHide', function () { 
         console.log('HIDE COLUMN');
      });

      kendoGrid.bind('columnShow', function () {
         console.log('SHOW COLUMN');
      });
   }
]);
4

2 に答える 2

1

グリッドが削除されたときに剣道グリッド コードがリスナーを削除すると仮定すると、問題はありません。剣道グリッドがクリーンアップされない場合は、次のようにします。

scope.$on('$destroy', function() {
  kendoGrid.destroyOrWhateverItsCalled();
});

$destroy イベントは、ディレクティブがビューから削除されると、Angular によってトリガーされます。

于 2014-03-13T10:01:00.067 に答える