0

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

4

2 回答 2

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();

现在它应该可以工作了。

结帐小提琴

于 2013-05-23T11:52:54.590 回答
0

您可以在实例化模型时将模型的 url 作为选项传入。

如果此类的所有模型共享一个公共根 URL,请确保已定义它或 urlRoot 属性。一个 id 为 2 的模型,存储在一个带有“/documents/7/notes” url 的 Backbone.Collection 中,将有这个 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';
  }
});
于 2013-05-23T11:37:39.767 回答