From a479eae115afc39d3ffc803cccb74f3a7a61007a Mon Sep 17 00:00:00 2001 From: c4605 Date: Fri, 17 Apr 2015 16:08:47 +0800 Subject: [PATCH] clean watcher after element destroy --- ng-sortable.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ng-sortable.js b/ng-sortable.js index d340a59..09055b4 100644 --- a/ng-sortable.js +++ b/ng-sortable.js @@ -69,6 +69,7 @@ ngSortable = attrs.ngSortable, options = scope.$eval(ngSortable) || {}, source = getSource(el), + watchers = [], sortable ; @@ -154,7 +155,11 @@ })); $el.on('$destroy', function () { + angular.forEach(watchers, function (/** Function */unwatch) { + unwatch(); + }); sortable.destroy(); + watchers = null; sortable = null; nextSibling = null; }); @@ -164,7 +169,7 @@ 'sort', 'disabled', 'draggable', 'handle', 'animation', 'onStart', 'onEnd', 'onAdd', 'onUpdate', 'onRemove', 'onSort' ], function (name) { - scope.$watch(ngSortable + '.' + name, function (value) { + watchers.push(scope.$watch(ngSortable + '.' + name, function (value) { if (value !== void 0) { options[name] = value; @@ -172,7 +177,7 @@ sortable.option(name, value); } } - }); + })); }); } }