如何将JSON对象存储到对象属性中?

时间:2015-01-21 18:34:29

标签: jquery

我用jQuery做了一个测验,编码很差。现在我使用OOP重新编码。但是,我在将JSON信息存储到我的模型属性时遇到问题。

var quizModel = {
    currentQuestion: 0,
    correctAnswers: 0,

    init: function() {
        "use strict";
        $('.quiz').append('<div class="form"></div>');
        $('.form').append('<form id="form"></form>');
        quizView.addQuestion();
    },
    getJson: function() {
        "use strict";
        return JSON.parse($.ajax({
            type: 'GET',
            url: 'package.json',
            dataType: 'json',
            global: false,
            async:false,
            success: function(data) {
                return data;

            }
        }).responseText);
    },
    answerDatabase: this.getJson()
};

我无法将JSON对象存储到answerDatabase属性中。我不知道为什么。当我没有使用OOP时,我能够将返回的对象存储到变量中,并且可以通过我的javascript文件访问该对象。任何人都知道如何解决这个问题? 控制台说(Uncaught TypeError:无法读取属性&#39; getJson&#39;未定义)

1 个答案:

答案 0 :(得分:2)

在对象定义完成之前调用

answerDatabase: this.getJson(),因此在范围this中可能是window对象。您需要将代码重构为类似的东西(这不是一个完美的例子)

var quizModel = {
    currentQuestion: 0,
    correctAnswers: 0,

    init: function() {
        "use strict";
        $('.quiz').append('<div class="form"></div>');
        $('.form').append('<form id="form"></form>');
        quizView.addQuestion();
    },
    getJson: function() {
        "use strict";
        return JSON.parse($.ajax({
            type: 'GET',
            url: 'package.json',
            dataType: 'json',
            global: false,
            async:false,
            success: function(data) {
                return data;

            }
        }).responseText);
    },
    answerDatabase: {};
};

quizModel.answerDatabase = quizModel.getJson();