backbone.js模型选项集合未设置url

时间:2013-05-23 11:10:46

标签: backbone.js backbone-model

在后骨文档中,它指定在初始化模型时,可以通过将集合作为选项传递给模型来将模型链接到集合。然后,模型应该能够从集合中构建自己的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

2 个答案:

答案 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';
  }
});