1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /**
- * @fileOverview
- *
- * 简版事件解耦功能
- *
- * @author: techird
- * @copyright: Baidu FEX, 2014
- */
- KityMinder.registerUI('eve', function(minder) {
- return {
- setup: function(obj) {
- var callbacks = {};
-
- obj.on = function on(name, callback) {
- var list = callbacks[name] || (callbacks[name] = []);
- list.push(callback);
- return this;
- };
-
- obj.off = function off(name, callback) {
- var list = callbacks[name];
- if (list) {
- var index = list.indexOf(callback);
- if (~index) {
- list.splice(index, 1);
- } else {
- callback[name] = null;
- }
- }
- return this;
- };
-
- obj.once = function once(name, callback) {
- return this.on(name, function wrapped() {
- callback.apply(obj, arguments);
- obj.off(name, wrapped);
- });
- };
-
- obj.fire = function fire(name) {
- var list = callbacks[name];
- var args = [].slice.call(arguments, 1);
- if (list) list.forEach(function(callback) {
- callback.apply(obj, args);
- });
- return this;
- };
- return obj;
- }
- };
- });
|