我用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;未定义)
答案 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();