Browse Source

无JIRA chore: listeners支持对象,对象的value支持array

es6
zsmj 2 years ago
parent
commit
07dbabbfbf
  1. 19
      src/core/3.ob.js
  2. 4
      src/core/5.inject.js

19
src/core/3.ob.js

@ -32,9 +32,7 @@
this._constructor(config); this._constructor(config);
}; };
BI._.extend(OB.prototype, { BI._.extend(OB.prototype, {
props: {}, props: {}, init: null, destroyed: null,
init: null,
destroyed: null,
_constructor: function (config) { _constructor: function (config) {
this._initProps(config); this._initProps(config);
@ -71,6 +69,12 @@
self.on(eventName, lis); self.on(eventName, lis);
return; return;
} }
if (BI._.isArray(lis)) {
BI._.each(lis, function (l) {
self.on(eventName, l);
});
return;
}
(lis.target ? lis.target : self)[lis.once ? "once" : "on"](lis.eventName, BI._.bind(lis.action, self)); (lis.target ? lis.target : self)[lis.once ? "once" : "on"](lis.eventName, BI._.bind(lis.action, self));
}); });
delete this.options.listeners; delete this.options.listeners;
@ -139,8 +143,7 @@
this.un(eventName, proxy); this.un(eventName, proxy);
}; };
this.on(eventName, proxy); this.on(eventName, proxy);
}, }, /**
/**
* 解除观察者绑定的指定事件 * 解除观察者绑定的指定事件
* @param {String} eventName 要解除绑定事件的名字 * @param {String} eventName 要解除绑定事件的名字
* @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件 * @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
@ -163,15 +166,13 @@
this._getEvents()[eventName] = newFns; this._getEvents()[eventName] = newFns;
} }
} }
}, }, /**
/**
* 清除观察者的所有事件绑定 * 清除观察者的所有事件绑定
*/ */
purgeListeners: function () { purgeListeners: function () {
/* alex:清空events*/ /* alex:清空events*/
this.events = {}; this.events = {};
}, }, /**
/**
* 触发绑定过的事件 * 触发绑定过的事件
* *
* @param {String} eventName 要触发的事件的名字 * @param {String} eventName 要触发的事件的名字

4
src/core/5.inject.js

@ -479,9 +479,11 @@
} }
}]); }]);
} else { } else {
w.listeners[BI.Events.MOUNT] = function () { w.listeners[BI.Events.MOUNT] = (w.listeners[BI.Events.MOUNT] || []), concat([
function () {
BI.Plugin.getObject(elType, this); BI.Plugin.getObject(elType, this);
} }
]);
} }
} }
return createWidget(w, context, lazy); return createWidget(w, context, lazy);

Loading…
Cancel
Save