2014-06-30 97 views

回答

0

这里的参数'name'表示要绑定到对象的事件名称(第一个参数)。如果name参数不支持多事件注册,则函数eventsApi将返回true(Backbone的事件API仅支持字符串和对象表示格式,例如:“change click”,{change:action,click:action2})。

如果传递非字符串或非对象名称参数,事件API将为'单个事件'注册事件处理程序。在你的情况下,你尝试注册一个名为undefined的自定义事件,backbone将把它视为单个事件处理程序注册。

综上所述,返回的布尔值决定事件寄存器是否需要执行'多事件注册'。

.... 
on: function(name, callback, context) { 
    //multi-events registration will be processed if the eventsApi function call return 'false' 
    if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this; 
    this._events || (this._events = {}); 
    var events = this._events[name] || (this._events[name] = []); 
    events.push({callback: callback, context: context, ctx: context || this}); 
    return this; 
}, 
+0

谢谢!但似乎事件注册已经生效。 [jsfiddle](http://jsfiddle.net/5xAkM/) – Allenice

+0

感谢您的提醒和解答已更新。你可以参考它:) – Chickenrice

相关问题