@@ -7,8 +7,14 @@ angular.module('flow.dragEvents', ['flow.init'])
7
7
return {
8
8
'scope' : false ,
9
9
'link' : function ( scope , element , attrs ) {
10
- element . bind ( ' drop dragover' , function ( event ) {
10
+ var drop = function ( event ) {
11
11
event . preventDefault ( ) ;
12
+ }
13
+
14
+ element . bind ( 'drop dragover' , drop ) ;
15
+
16
+ scope . $on ( '$destroy' , function ( ) {
17
+ element . unbind ( 'drop dragover' , drop ) ;
12
18
} ) ;
13
19
}
14
20
} ;
@@ -23,24 +29,36 @@ angular.module('flow.dragEvents', ['flow.init'])
23
29
'link' : function ( scope , element , attrs ) {
24
30
var promise ;
25
31
var enter = false ;
26
- element . bind ( 'dragover' , function ( event ) {
27
- if ( ! isFileDrag ( event ) ) {
28
- return ;
29
- }
30
- if ( ! enter ) {
31
- scope . $apply ( attrs . flowDragEnter ) ;
32
- enter = true ;
33
- }
34
- $timeout . cancel ( promise ) ;
35
- event . preventDefault ( ) ;
36
- } ) ;
37
- element . bind ( 'dragleave drop' , function ( event ) {
38
- promise = $timeout ( function ( ) {
39
- scope . $eval ( attrs . flowDragLeave ) ;
40
- promise = null ;
41
- enter = false ;
42
- } , 100 ) ;
32
+
33
+ var dragOver = function ( event ) {
34
+ if ( ! isFileDrag ( event ) ) {
35
+ return ;
36
+ }
37
+ if ( ! enter ) {
38
+ scope . $apply ( attrs . flowDragEnter ) ;
39
+ enter = true ;
40
+ }
41
+ $timeout . cancel ( promise ) ;
42
+ event . preventDefault ( ) ;
43
+ }
44
+
45
+ element . bind ( 'dragover' , dragOver ) ;
46
+
47
+ var dragLeave = function ( event ) {
48
+ promise = $timeout ( function ( ) {
49
+ scope . $eval ( attrs . flowDragLeave ) ;
50
+ promise = null ;
51
+ enter = false ;
52
+ } , 100 ) ;
53
+ }
54
+
55
+ element . bind ( 'dragleave drop' , dragLeave ) ;
56
+
57
+ scope . $on ( '$destroy' , function ( ) {
58
+ element . unbind ( 'dragover' , dragOver ) ;
59
+ element . unbind ( 'dragleave drop' , dragLeave ) ;
43
60
} ) ;
61
+
44
62
function isFileDrag ( dragEvent ) {
45
63
var fileDrag = false ;
46
64
var dataTransfer = dragEvent . dataTransfer || dragEvent . originalEvent . dataTransfer ;
@@ -53,4 +71,4 @@ angular.module('flow.dragEvents', ['flow.init'])
53
71
}
54
72
}
55
73
} ;
56
- } ] ) ;
74
+ } ] ) ;
0 commit comments