我想将一个函数传递给backbone的成功回调,就像这个
this.model.fetch({
success: this.setup
});
然而,这将无法工作我最终必须通过整个环境并包装在这样的函数内:
var that = this;
this.model.fetch({
success: function(){
that.setup();
}
});
为什么我不能这样做?即使我将setup函数绑定到它的父节点,如_.bind( this.setup, this );
,它仍然不会使用正确的(它的'父节点)。但只有它'没有包裹在一个功能......
答案 0 :(得分:2)
_.bind
返回一个绑定到对象的函数,它不会修改原始函数(基本上它会创建你编写的包装函数)。
但是,您可以将此绑定函数作为回调传递
this.model.fetch({
success: _.bind(this.setup, this);
});
或使用_.bindAll
修改对象以使用绑定函数:
var V = Backbone.View.extend({
initialize: function() {
_.bindAll(this, "setup");
this.model.fetch({
success: this.setup
});
},
setup: function() {
}
});
答案 1 :(得分:-1)
它不起作用因为“这个”是你定义的对象({success:this.setup})试试这个:
var that = this;
this.model.fetch({
success: that.setup
}
});
然而,我不喜欢它太多,因为事件处理程序就是这样,它们处理事件,然后做东西(比如setup()方法),在这种情况下,你可能会在闭包中丢失对象。