我有一个模型
var TodoModel = Backbone.Model.extend({
defaults: {
title : '',
completed: false
}
});
当我试图使用Collection.create
方法将此模型添加到集合时,我得到一个错误
未捕获错误:必须指定"url"属性或函数
我尝试了以下方法
var TodoCollection = Backbone.Collection.extend({
model : TodoModel,
});
todoCollection.create({title:'Try out code examples', completed:true});
有人能帮我一下吗? 如果您正在创建一个模型/集合——默认情况下您必须为资源指定一个url。您可以这样做:
var TodoModel = Backbone.Model.extend({
defaults: {
title : '',
completed: false
}
});
var TodoCollection = Backbone.Collection.extend({
url: '/todos',
model : TodoModel,
});
参见http://backbonejs.org/#Collection-url了解更多详细信息。
我认为这里的混乱来自Backbone.js的Todo样本,它使用本地存储(http://documentcloud.github.com/backbone/docs/backbone-localstorage.html)。如果跳到本地存储代码的底部,可以看到Backbone。设置sync。通过这样做,我们改变了创建模型的默认行为,使其不再需要Url。在大多数骨干应用程序中,情况并非如此,需要一个服务器端URL才能使模型工作。
这是因为destroy()函数将调用Backbone。同步更新服务器,而不仅仅是你的模型在前端。http://backbonejs.org/Model-destroy
所以,如果你使用REST来同步你的数据,你需要在你的模型中设置一个url属性,以便Backbone知道向哪里发送请求:
Backbone.Model.extend({
url: "http://myapi.com/"
})
为了更灵活,您还可以设置urlRoot: http://backbonejs.org/#Model-urlRoot
或者你可以加上
Backbone.sync = function(method, model, success, error){
success();
}