如何检查该对象是否有事件?

时间:2014-08-04 07:02:54

标签: backbone.js

我的例子:

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 ????

如何检查该对象是否有事件?
我希望得到你的帮助。

3 个答案:

答案 0 :(得分:1)

allbuilt-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)