UpT*_*eek 15 javascript backbone.js
鉴于下面的骨干视图函数,this将回调(即当前视图)传递给回调中定义的匿名函数的正确方法是什么?
addSomething: function(e) {
var newSomething= this.model.somethings.create({
someProperty: xxx
}, {
success: function(m, response) {
this.doSomething(); //***HERE****
},
error: function(m, response) {
//Error
}
});
},
Run Code Online (Sandbox Code Playgroud)
没有和更改,thisanon函数中的设置被设置为窗口.
我可以像这样设置一个引用:
var thisView = this;
Run Code Online (Sandbox Code Playgroud)
然后只是引用thisView而不是this在anon函数中,但这似乎并不优雅.有没有更好的办法?
Der*_*ley 28
为了更好地组织我的代码并解决这个问题,我从未将成功和错误回调直接与我的调用一致.我总是把它们分成自己的功能.这让我保持代码干净,并使用该_.bindAll方法确保我有正确的上下文this.
SomeView = Backbone.View.extend({
initialize: function(){
_.bindAll(this, "createSuccess", "createError");
},
addSomething: function(e) {
var newSomething= this.model.somethings.create({someProperty: xxx}, {
success: this.createSuccess,
error: this.createError
});
},
createSuccess: function(m, response) {
this.doSomething();
},
createError: function(m, response) {
//Error
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6502 次 |
| 最近记录: |