在Backbone&木偶,我正在用json抓住我的翻译。我在onBeforeRender函数下的ItemView中执行此操作。但每当我调用“this.model.set”函数时,我总是会收到错误,说“TypeError:this.model is undefined”。有没有办法设置一个在getJSON函数内部分配的getJSON之外的变量?
onBeforeRender: function(model){
//let's get the json translation file before we render the view
var jqXHR = $.getJSON("en.json", function(data, textStatus, jqXHR) {
this.model.set({trans:jqXHR.responseJSON}); //it fails here
return jqXHR.responseJSON;
}).fail(function(data){
}).then(function(data){
}).done(function(data){
console.debug(data)
});
},
或者,如果有人对如何做得更好有建议,那就太好了。
答案 0 :(得分:1)
this
可能并不是指您的想法。设置一些上下文并重试:
var that = this;
//let's get the json translation file before we render the view
var jqXHR = $.getJSON("en.json", function(data, textStatus, jqXHR) {
that.model.set({trans:jqXHR.responseJSON}); //it fails here
return jqXHR.responseJSON;
答案 1 :(得分:0)
this
回调中的.getJSON
不符合您的想法。使用以下代码:
var self = this;
var jqXHR = $.getJSON("en.json", function(data, textStatus, jqXHR) {
self.model.set({trans:jqXHR.responseJSON}); //it fails here
return jqXHR.responseJSON;
}).fail(function(data){
}).then(function(data){
}).done(function(data){
console.debug(data)
});
在您的代码this
中指向回调,而不是视图。