我的例子:
var object = {
msg: 'context obj'
};
var object2 = {
msg: 'other context obj2'
};
_.extend(Object.prototype, Backbone.Events);
object.on("alert:boom", function() {
console.log("run " + this.msg);
}, object2);
object.on("all", function(eventName) {
console.log('all');
});
object.trigger("alert:boom");
object.trigger("alert:riri"); //Why called ALL ????
如何检查该对象是否有事件?
我希望得到你的帮助。
答案 0 :(得分:1)
all
是built-in Backbone events之一
Callbacks bound to the special **all** event will be triggered when any event occurs, and are passed the name of the event as the first argument.
因此,如果您想知道何时发生任何事件,请执行以下操作:
Object.on('all', function(eventName) {
console.log('event [' + eventName + '] triggered');
});
答案 1 :(得分:1)
目前还不清楚你的问题是“如何检查该对象是否有事件?”或“//为什么叫ALL ????” - @AlexacderImra回答了最后一个问题。
不建议您检查内部变量,但这种情况不太可能发生变化 - 事件数组为_events
,因此您可以这样做:
if (myObject._events['myeventname'])
检查特定事件,或:
if (myObject._events.length)
检查是否有任何事件。
最好将该功能包装在一个函数中,以便在将来版本的Backbone中更改时,您只需要在一个地方更新逻辑。
答案 2 :(得分:0)
使用JSON.stringify,在里面检查。
JSON.stringify(object)