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);
}