@@ -30,8 +30,7 @@ angular.module('mm.foundation.dropdownToggle', [ 'mm.foundation.position', 'mm.f
30
30
link : function ( scope , element , attrs , controller ) {
31
31
var dropdown = angular . element ( $document [ 0 ] . querySelector ( scope . dropdownToggle ) ) ;
32
32
33
- scope . $watch ( '$location.path' , function ( ) { closeMenu ( ) ; } ) ;
34
- element . bind ( 'click' , function ( event ) {
33
+ var onClick = function ( event ) {
35
34
dropdown = angular . element ( $document [ 0 ] . querySelector ( scope . dropdownToggle ) ) ;
36
35
var elementWasOpen = ( element === openElement ) ;
37
36
@@ -76,18 +75,25 @@ angular.module('mm.foundation.dropdownToggle', [ 'mm.foundation.position', 'mm.f
76
75
77
76
openElement = element ;
78
77
closeMenu = function ( event ) {
79
- $document . unbind ( 'click' , closeMenu ) ;
78
+ $document . off ( 'click' , closeMenu ) ;
80
79
dropdown . css ( 'display' , 'none' ) ;
81
80
closeMenu = angular . noop ;
82
81
openElement = null ;
83
82
} ;
84
- $document . bind ( 'click' , closeMenu ) ;
83
+ $document . on ( 'click' , closeMenu ) ;
85
84
}
86
- } ) ;
85
+ }
87
86
88
87
if ( dropdown ) {
89
88
dropdown . css ( 'display' , 'none' ) ;
90
89
}
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
+ } ) ;
91
97
}
92
98
} ;
93
99
} ] ) ;
0 commit comments