@@ -10,6 +10,7 @@ var __extends = (this && this.__extends) || (function () {
10
10
} ;
11
11
} ) ( ) ;
12
12
Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
13
+ var vue_1 = require ( "vue" ) ;
13
14
var js_simple_events_1 = require ( "js-simple-events" ) ;
14
15
var EventManagment = /** @class */ ( function ( _super ) {
15
16
__extends ( EventManagment , _super ) ;
@@ -23,6 +24,34 @@ var EventManagment = /** @class */ (function (_super) {
23
24
}
24
25
return EventManagment ;
25
26
} ( js_simple_events_1 . default ) ) ;
27
+ function bindEvents ( obj , from , to ) {
28
+ var evts = obj [ from ] ;
29
+ if ( evts ) {
30
+ obj [ to ] = { } ;
31
+ for ( var k in evts ) {
32
+ obj [ to ] [ k ] = ~ evts [ k ] . name . indexOf ( 'bound ' ) ? evts [ k ] : evts [ k ] . bind ( this ) ;
33
+ }
34
+ }
35
+ }
36
+ function addEventListener ( event , handler , isOnce ) {
37
+ if ( isOnce === void 0 ) { isOnce = false ; }
38
+ vue_1 . default . prototype . $events [ isOnce ? 'once' : 'on' ] ( event , handler ) ;
39
+ }
40
+ function addEventListeners ( obj , isOnce ) {
41
+ if ( isOnce === void 0 ) { isOnce = false ; }
42
+ if ( obj ) {
43
+ for ( var k in obj ) {
44
+ addEventListener ( k , obj [ k ] , isOnce ) ;
45
+ }
46
+ }
47
+ }
48
+ function removeEventListeners ( obj ) {
49
+ if ( obj ) {
50
+ for ( var k in obj ) {
51
+ vue_1 . default . prototype . $events . off ( k , obj [ k ] ) ;
52
+ }
53
+ }
54
+ }
26
55
var eventsPlugins = function ( Vue ) {
27
56
var eventManagement = new EventManagment ( ) ;
28
57
Object . defineProperties ( Vue . prototype , {
@@ -35,31 +64,19 @@ var eventsPlugins = function (Vue) {
35
64
Vue . mixin ( {
36
65
beforeCreate : function ( ) {
37
66
var $this = this ;
38
- var evts = $this . $options . on ;
39
- if ( evts ) {
40
- $this . $options . $setEvents = { } ;
41
- for ( var k in evts ) {
42
- $this . $options . $setEvents [ k ] = ~ evts [ k ] . name . indexOf ( 'bound ' ) ? evts [ k ] : evts [ k ] . bind ( this ) ;
43
- }
44
- }
67
+ var options = $this . $options ;
68
+ bindEvents ( options , 'on' , '$setEventsOn' ) ;
69
+ bindEvents ( options , 'once' , '$setEventsOnce' ) ;
45
70
} ,
46
71
created : function ( ) {
47
72
var $this = this ;
48
- var evts = $this . $options . $setEvents ;
49
- if ( evts ) {
50
- for ( var k in evts ) {
51
- Vue . prototype . $events . on ( k , evts [ k ] ) ;
52
- }
53
- }
73
+ addEventListeners ( $this . $options . $setEventsOn , false ) ;
74
+ addEventListeners ( $this . $options . $setEventsOnce , true ) ;
54
75
} ,
55
76
beforeDestroy : function ( ) {
56
77
var $this = this ;
57
- var evts = $this . $options . $setEvents ;
58
- if ( evts ) {
59
- for ( var k in evts ) {
60
- Vue . prototype . $events . off ( k , evts [ k ] ) ;
61
- }
62
- }
78
+ removeEventListeners ( $this . $options . $setEventsOn ) ;
79
+ removeEventListeners ( $this . $options . $setEventsOnce ) ;
63
80
}
64
81
} ) ;
65
82
} ;
0 commit comments