我在Backbone中有一个具有多种功能的视图。
我拥有的功能是初始化,渲染,答案,answerQuestion,nextQuestion。
这是我初始化函数中的代码
initialize: function(game) {
_.bindAll(this, 'render', 'answer');
this.render();
}
在render函数中,我通过执行以下操作来调用answerQuestion函数:
this.answerQuestion();
它工作正常。
但是在我的答案函数中,我以相同的方式调用nextQuestion函数,并且出现此错误
undefined is not a function
,如果我刚开始时不使用this
调用该函数,则会出现此错误'nextQuestion is not defined'
我想让这个工作失去什么。
这是完整的答案功能:
var v = $('.question.current .type').find('.input').val();
if (v !== undefined) {
var t = new Date();
var time_spent = t.getTime() - this.t.getTime();
var self = this;
answer.save().done(function(result, status) {
if (status === 'success') {
this.nextQuestion();
}
});
}
最佳答案
您使用this.nextQuestion();
指的是错误的上下文。它应该是self.nextQuestion();
。或者您可以像这样将回调绑定到外部函数的上下文:
var v = $('.question.current .type').find('.input').val();
if (v !== undefined) {
var t = new Date();
var time_spent = t.getTime() - this.t.getTime();
var self = this;
answer.save().done(function(result, status) {
if (status === 'success') {
this.nextQuestion();
}
}.bind(this));
}