在后骨文档中,它指定在初始化模型时,可以通过将集合作为选项传递给模型来将模型链接到集合。然后,模型应该能够从集合中构建自己的URL。
var MyCollection = Backbone.Collection.extend({
url: 'api/myitems/'
});
var some_model = Backbone.Model({id:2}, {collection: MyCollection});
var some_model.fetch();
这不起作用,我的控制台说Error: A "url" property or function must be specified
http://localhost/static/backbone-min.js
Line 1
答案 0 :(得分:2)
要实现你想要达到的目标,需要做一些小改动。
应该正确宣布模型。在初始化模型时,应传递您传递的模型选项。
您必须初始化集合并将集合实例作为参数传递给模型实例创建。
var MyCollection = Backbone.Collection.extend({
url: 'api/myitems/'
});
var SomeModel = Backbone.Model.extend({});
var my_collection = new MyCollection();
var some_model = new SomeModel({ id : 2 }, { collection : my_collection });
var some_model.fetch();
现在应该可以了。
结帐Fiddle。
答案 1 :(得分:0)
您可以在实例化时将模型的url作为选项传递。
如果此类的所有模型共享一个公共根URL,请确保已定义它或urlRoot属性。 ID为2的模型存储在Backbone.Collection中,其URL为“/ documents / 7 / notes”,将具有以下URL:“/ documents / 7 / notes / 2”
在集合上设置url属性(或函数)以引用其在服务器上的位置。集合中的模型将使用url构建自己的URL。
var Notes = Backbone.Collection.extend({
url: '/notes'
});
// Or, something more sophisticated:
var Notes = Backbone.Collection.extend({
url: function() {
return this.document.url() + '/notes';
}
});