类型错误:在backbone.js视图/模型中调用嵌套函数

时间:2014-06-20 10:52:44

标签: backbone.js

基本上自定义嵌套函数无法在BackBone视图和&模型,收到错误“TypeError:not a function”或“Undefined”。以下是使用backbone.js

的示例代码段

Scenario_1:

sampleX : function() {
    this.sampleZ();

    sampleY(function() {
        this.sampleZ();
    });
}

当在sampleY()函数中调用this.sampleZ()行时,得到类似“TypeError:this.sampleZ()的错误不是函数。”

Scenario_2:

sampleX : function() {
    this.sampleY();
},
sampleY : fucntion (){
        this.sampleZ();     
},
sampleZ : fucntion(){
        ...
}

当我尝试在sampleX()内部调用sampleY()时调用它,但是sampleZ()没有调用试图在sampleY()函数内部调用的函数。

任何帮助都会受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

似乎

中的上下文有问题
sampleY(function() {
    this.sampleZ();
});

使用绑定功能...否则'这' 不是您所期望的

    this.sampleY1(_.bind(function() {             
        this.sampleZ1();
    }, this));

这对我有用:

var Model = Backbone.Model.extend({
    defaults:{
        someKey: 'test123'
    },  

    sampleZ1: function(){
        console.log('Z1');
    },
    sampleX1 : function() {
        console.log('X1');
        this.sampleZ1();        

        this.sampleY1(_.bind(function() {             
            this.sampleZ1();
        }, this));
    },
    sampleY1: function(callback) {
        console.log('Y1');
        callback();
    },    

    sampleX2: function() {
        console.log('X2');
        this.sampleY2();
    },
    sampleY2: function () {
        console.log('Y2');
        this.sampleZ2();     
    },
    sampleZ2: function(){
        console.log('Z2');
    }        

});

var testMdl = new Model();
testMdl.sampleX1();
console.log('----');
testMdl.sampleX2();