Skip to content

Commit 095a0d4

Browse files
committed
refactor(dropdownToggle): Refactor event binding. Unbind on destroy.
1 parent c10dffc commit 095a0d4

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/dropdownToggle/dropdownToggle.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ angular.module('mm.foundation.dropdownToggle', [ 'mm.foundation.position', 'mm.f
3030
link: function(scope, element, attrs, controller) {
3131
var dropdown = angular.element($document[0].querySelector(scope.dropdownToggle));
3232

33-
scope.$watch('$location.path', function() { closeMenu(); });
34-
element.bind('click', function (event) {
33+
var onClick = function (event) {
3534
dropdown = angular.element($document[0].querySelector(scope.dropdownToggle));
3635
var elementWasOpen = (element === openElement);
3736

@@ -76,18 +75,25 @@ angular.module('mm.foundation.dropdownToggle', [ 'mm.foundation.position', 'mm.f
7675

7776
openElement = element;
7877
closeMenu = function (event) {
79-
$document.unbind('click', closeMenu);
78+
$document.off('click', closeMenu);
8079
dropdown.css('display', 'none');
8180
closeMenu = angular.noop;
8281
openElement = null;
8382
};
84-
$document.bind('click', closeMenu);
83+
$document.on('click', closeMenu);
8584
}
86-
});
85+
}
8786

8887
if (dropdown) {
8988
dropdown.css('display', 'none');
9089
}
90+
91+
scope.$watch('$location.path', function() { closeMenu(); });
92+
93+
element.on('click', onClick);
94+
element.on('$destroy', function() {
95+
element.off('click', onClick);
96+
});
9197
}
9298
};
9399
}]);

0 commit comments

Comments
 (0)