mobilemode.api.event_wev8.js
1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
define("mApi/event", function () {
var store = {};
var evt = function (id) {
if (id && store[id]) return store[id];
var evts = {};
store[id] = this;
var _off = function (evtName, cb) {
var e = evts[evtName];
if (!e) return;
if (cb) {
var index = e.indexOf(cb);
~index && e.splice(index, 1);
} else {
delete evts[evtName];
}
if (!evts[evtName] || !evts[evtName].length) {
e.ready = false;
}
return;
};
this.on = function (evtName, cb) {
if (!evtName || !cb) return this;
var e = evts[evtName] || [];
if (e.ready) cb();
evts[evtName] = e;
evts[evtName].push(cb);
return this;
};
this.off = function (evtName, cb) {
// 传特定的evtName 会解绑相应的事件
// 不传evtName 时 会解绑该页面中所有的事件
if (!evtName && !cb) {
return (evts = {});
}
var names = evtName.split(',');
names.forEach(function (name) {
_off(name.trim(), cb);
});
return this;
};
this.trigger = function (evtName) {
var args = [].slice.call(arguments, 1);
var e = evts[evtName];
if (!e) {
evts[evtName] = e = [];
}
e.ready = true;
e.forEach(function (cb) {
cb.apply(null, args);
});
return this;
};
};
evt.getInstance = function (id) {
return store[id];
};
return evt;
});