1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 | var on = function on(name, _callback, one) {
|
20 | var self = this,
|
21 | origCb = _callback;
|
22 | if (Object.prototype.toString.call(name) == '[object Array]') {
|
23 |
|
24 | for (var i in name) {
|
25 | this.on(name[i], _callback);
|
26 | }
|
27 | return this;
|
28 | } else if ((typeof name === 'undefined' ? 'undefined' : babelHelpers['typeof'](name)) == 'object') {
|
29 |
|
30 | for (var key in name) {
|
31 | this.on(key, name[key]);
|
32 | }
|
33 | return this;
|
34 | }
|
35 | if (one) {
|
36 | _callback = function callback() {
|
37 | self.off(name, _callback);
|
38 | origCb.apply(this, arguments);
|
39 | };
|
40 | }
|
41 | name = name.toLowerCase();
|
42 | this._events || (this._events = {});
|
43 | var events = this._events[name] || (this._events[name] = []);
|
44 | events.push({
|
45 | callback: _callback
|
46 | });
|
47 | return this;
|
48 | };
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 | var off = function off(name, callback) {
|
62 | name = name.toLowerCase();
|
63 | if (!this._events) return this;
|
64 | if (Object.prototype.toString.call(name) == '[object Array]') {
|
65 |
|
66 | for (var i in name) {
|
67 | this.off(name[i], callback);
|
68 | }
|
69 | return this;
|
70 | } else if ((typeof name === 'undefined' ? 'undefined' : babelHelpers['typeof'](name)) == 'object') {
|
71 |
|
72 | for (var key in name) {
|
73 | this.off(key, name[key]);
|
74 | }
|
75 | return this;
|
76 | }
|
77 | var cbs = this._events[name];
|
78 | if (!cbs) return this;
|
79 | if (!callback) {
|
80 |
|
81 | cbs = null;
|
82 | } else {
|
83 | for (var i = cbs.length - 1; i >= 0; i--) {
|
84 | if (cbs[i] == callback) {
|
85 | cbs.splice(i, 1);
|
86 | }
|
87 | }
|
88 | }
|
89 | this._events[name] = cbs;
|
90 | return this;
|
91 | };
|
92 |
|
93 |
|
94 |
|
95 |
|
96 |
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 |
|
103 | var one = function one(name, callback) {
|
104 | this.on(name, callback, 1);
|
105 | };
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 |
|
115 | var trigger = function trigger(name) {
|
116 | name = name.toLowerCase();
|
117 | if (!this._events || !this._events[name]) return this;
|
118 | var args = Array.prototype.slice.call(arguments, 1);
|
119 | var events = this._events[name];
|
120 | for (var i = 0, count = events.length; i < count; i++) {
|
121 | events[i].callback.apply(this, args);
|
122 | }
|
123 | return this;
|
124 | };
|
125 |
|
126 |
|
127 | var triggerReturn = function triggerReturn(name) {
|
128 | name = name.toLowerCase();
|
129 | if (!this._events || !this._events[name]) return this;
|
130 | var args = Array.prototype.slice.call(arguments, 1);
|
131 | var events = this._events[name];
|
132 | var flag = true;
|
133 | for (var i = 0, count = events.length; i < count; i++) {
|
134 | flag = flag && events[i].callback.apply(this, args);
|
135 | }
|
136 | return flag;
|
137 | };
|
138 |
|
139 |
|
140 | var getEvent = function getEvent(name) {
|
141 | name = name.toLowerCase();
|
142 | this._events || (this._events = {});
|
143 | return this._events[name];
|
144 | };
|
145 |
|
146 | export var eventsFunObj = {
|
147 | on: on,
|
148 | off: off,
|
149 | one: one,
|
150 | trigger: trigger,
|
151 | triggerReturn: triggerReturn,
|
152 | getEvent: getEvent
|
153 | }; |
\ | No newline at end of file |