Backbone.js 将函数传递给'events'散列

Backbone.js 将函数传递给'events'散列,backbone.js,Backbone.js,在主干内。查看实例可以设置回调的事件散列: events: { 'click #element' : 'myFunction' } 当我尝试访问的函数不是视图实例的直接函数(例如,this.model.myFunction)时,我无法在事件散列中传递该函数。我试过: events: { 'click #element' : 'model.myFunction' } 及 如何告诉我的主干视图使用this.model.myFunction作为eventshash的回调权限?不,您不能这样做。下面

主干内。查看
实例可以设置回调的
事件
散列:

events: { 'click #element' : 'myFunction' }
当我尝试访问的函数不是视图实例的直接函数(例如,
this.model.myFunction
)时,我无法在
事件
散列中传递该函数。我试过:

events: { 'click #element' : 'model.myFunction' }


如何告诉我的主干视图使用
this.model.myFunction
作为
events
hash的回调权限?

不,您不能这样做。下面的示例如下所示:

delegateEvents : function(events) {
  if (!(events || (events = getValue(this, 'events')))) return;
  this.undelegateEvents();
  for (var key in events) {
    var method = this[events[key]];
    if (!method) throw new Error('Event "' + events[key] + '" does not exist');
    //...
因此,
events
中的值必须是视图对象中方法的名称。不过,您可以自己安排活动:

events: { 'click #element': 'myFunction' },
// ...
myFunction: function(e) {
    this.model.myFunction(e);
}

我同意这一点。OP的问题:在模型中有一个事件处理程序真的有意义吗?@jdigital:我同意模型中的事件处理程序(
myFunction(e)
)很奇怪,但视图中的事件处理程序只调用模型方法(
this.Model.myFunction(e.something)
)如果
myFunction
只是在做模型方面的事情,这就足够合理了。@jdigital:我有权监听
model
destroy
事件。我想销毁
单击的模型。使用事件处理程序
this.model.destroy
@muistooshort:我想从视图中调用
this.model.destroy
,我认为这很自然。@Randomblue:不,你不能这样做,您需要在视图中使用一个小的行程序来完成这个.model.destroy()
。顺便说一句,这可能属于我之前评论的“足够合理”部分,所以看起来你没有做任何奇怪的事情。
events: { 'click #element': 'myFunction' },
// ...
myFunction: function(e) {
    this.model.myFunction(e);
}