Backbone中的函数未定义

时间:2014-05-08 18:43:40

标签: javascript backbone.js

我在Backbone中有一个具有多种功能的视图。 我有的功能是初始化,渲染,回答,answerQuestion,nextQuestion。

这是我在初始化函数中的代码

initialize: function(game) {
    _.bindAll(this, 'render', 'answer');
    this.render();
}

在渲染函数中,我通过执行以下操作调用answerQuestion函数:

this.answerQuestion();

工作正常。

但在我的回答函数中,我以相同的方式调用nextQuestion函数,并且我得到此错误undefined is not a function,如果我在开始时调用没有this的函数,则会出现此错误{{1 }}

我缺少什么让这个工作。 这是完整的答案功能:

'nextQuestion is not defined'

1 个答案:

答案 0 :(得分:6)

您指的是错误的背景: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));
}