基本上自定义嵌套函数无法在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()函数内部调用的函数。
任何帮助都会受到赞赏。
感谢。
答案 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();