UNPKG

3.57 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
8
9/**
10 * Module : kero dataTable events
11 * Author : liuyk(liuyk@yonyou.com)
12 * Date : 2016-07-30 14:34:01
13 */
14
15/**
16 * 绑定事件
17 * 支持的格式: 1. on(u.DataTable.ON_ROW_FOCUS, function() {}) // 普通
18 * 2. on([u.DataTable.ON_INSERT, u.DataTable.ON_DELETE], function() {}) // 数组
19 * 3. on({u.DataTable.ON_INSERT: function() {}, u.DataTable.ON_DELETE: function() {}}) // map
20 */
21var on = function on(name, _callback, one) {
22 var self = this,
23 origCb = _callback;
24 if (Object.prototype.toString.call(name) == '[object Array]') {
25 // 数组
26 for (var i in name) {
27 this.on(name[i], _callback);
28 }
29 return this;
30 } else if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) == 'object') {
31 // map
32 for (var key in name) {
33 this.on(key, name[key]);
34 }
35 return this;
36 }
37 if (one) {
38 _callback = function callback() {
39 self.off(name, _callback);
40 origCb.apply(this, arguments);
41 };
42 }
43 name = name.toLowerCase();
44 this._events || (this._events = {});
45 var events = this._events[name] || (this._events[name] = []);
46 events.push({
47 callback: _callback
48 });
49 return this;
50};
51
52/**
53 * 解绑事件
54 *
55**/
56var off = function off(name, callback) {
57 if (Object.prototype.toString.call(name) == '[object Array]') {
58 // 数组
59 for (var i in name) {
60 this.off(name[i], callback);
61 }
62 return this;
63 } else if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) == 'object') {
64 // map
65 for (var key in name) {
66 this.off(key, name[key]);
67 }
68 return this;
69 }
70 var cbs = this._events[name];
71 if (!cbs) return this;
72 if (!callback) {
73 // 解绑所有事件
74 cbs = null;
75 } else {
76 for (var i = cbs.length - 1; i >= 0; i--) {
77 if (cbs[i] == callback) {
78 cbs.splice(i, 1);
79 }
80 }
81 }
82 return this;
83};
84
85/**
86 *
87**/
88var one = function one(name, callback) {
89 this.on(name, callback, 1);
90};
91
92/**
93 * 触发事件
94 */
95var trigger = function trigger(name) {
96 name = name.toLowerCase();
97 if (!this._events || !this._events[name]) return this;
98 var args = Array.prototype.slice.call(arguments, 1);
99 var events = this._events[name];
100 for (var i = 0, count = events.length; i < count; i++) {
101 events[i].callback.apply(this, args);
102 }
103 return this;
104};
105
106var triggerReturn = function triggerReturn(name) {
107 name = name.toLowerCase();
108 if (!this._events || !this._events[name]) return this;
109 var args = Array.prototype.slice.call(arguments, 1);
110 var events = this._events[name];
111 var flag = true;
112 for (var i = 0, count = events.length; i < count; i++) {
113 flag = flag && events[i].callback.apply(this, args);
114 }
115 return flag;
116};
117
118var getEvent = function getEvent(name) {
119 name = name.toLowerCase();
120 this._events || (this._events = {});
121 return this._events[name];
122};
123
124exports.on = on;
125exports.off = off;
126exports.one = one;
127exports.trigger = trigger;
128exports.triggerReturn = triggerReturn;
129exports.getEvent = getEvent;
\No newline at end of file