我正试图用Backbone弄湿我的脚,但我无法弄清楚这里有什么问题:
var ToDoApp = {
model: Backbone.Model.extend({
default:function(){
return {
task: '',
completed:false
}
}
}),
collection: Backbone.Collection.extend({
model: this.model
}),
view: Backbone.View.extend({
model: new this.model(),
tagName: 'li'
})
}
console.log(new ToDoApp.model());
我在视图的模型上得到'undefined is not a function'。发生了什么事? 此外,视图是否需要在那里有模型?对不起,如果这是一个非常基本的问题,我仍然不太了解骨干是如何运作的。
答案 0 :(得分:1)
这部分:
collection: Backbone.Collection.extend({
model: this.model
})
将在您构建ToDoApp
时执行,但this
当时不会ToDoApp
,this
可能会window
和{ {1}}不会有window
属性。结果是你实际上在说:
model
类似的问题发生在这里:
collection: Backbone.Collection.extend({
model: undefined
})
最简单的方法是逐件构建view: Backbone.View.extend({
model: new this.model(),
tagName: 'li'
})
:
ToDoApp
然后在创建视图实例时为视图实例创建模型:
var ToDoApp = { };
ToDoApp.model = Backbone.Model.extend({ ... });
ToDoApp.collection = Backbone.Collection.extend({
model: ToDoApp.model
});
ToDoApp.view = Backbone.View.extend({
tagName: 'li'
});
此外,使用var model = new ToDoApp.model();
var view = new ToDoApp.view({ model: model });
,ToDoApp.Model
和ToDoApp.Collection
等名称对您的“班级”更为常见。