在getJSON函数中分配变量

时间:2013-12-04 21:44:17

标签: javascript json backbone.js marionette

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

    },

或者,如果有人对如何做得更好有建议,那就太好了。

2 个答案:

答案 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中指向回调,而不是视图。