backbone.js - 使用collection.url的BackboneJS model.url

标签 backbone.js backbone.js-collections

根据我的理解,除非模型指定了urlRoot,否则Backbone JS模型的默认行为是返回Collection的URL。我似乎无法使行为正常。

从文档中:

model.url() ... Generates URLs of the form: "[collection.url]/[id]" by default, but you may override by specifying an explicit urlRoot if the model's collection shouldn't be taken into account.



这分别是我的收藏和模特:
var MyCollection = Backbone.Collection.extend({
    model: Model,
    initialize: function(options){
        this.options = options || {};
    },
    url: function(){
        return "/theurl/" + this.options.param;
    }
});
return MyCollection;

...
var MyModel = Backbone.Model.extend({
    urlRoot: '/theurl',
    initialize: function() {
    }
});
return MyModel;

当模型加载时没有集合时,它可以很好地工作并提交给/theurl,但是当模型加载到集合中时,所有方法都将提交给/theurl/param/

如果我正确地理解了文档,那么Model的urlRoot应该覆盖此行为;即使这样,模型网址也应该是/theurl/param/{MODEL-ID}

关于我所缺少/误解的任何想法?

...

PS:集合中的model: Model通过RequireJS引入

最佳答案

即使您指定了urlRoot,它也将始终使用集合的url。

使用urlRoot的原因是,您可以在替代中使用它,或者如果模型恰巧不在集合中(例如,它可能已被删除,但在客户端上仍然存在)。

因此,如果要fetchsave模型并覆盖由集合生成的url,则需要将urlRoot显式地传递给这些方法作为选项。例如:

yourModel.save({ url: yourModel.urlRoot });

我同意文档令人困惑,这也让我最近也感到困惑。

关于backbone.js - 使用collection.url的BackboneJS model.url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17461264/

相关文章:

jquery $(this) 在 CoffeeScript /主干中不起作用

javascript - 无法从主干集合获取数据

javascript - 如何将不属于 View 的 Backbone 按钮分配给操作?

javascript - 更改事件在主干 View 中触发而不是重置

javascript - 主干未捕获错误 :

javascript - Backbone Collection.add 似乎不起作用

backbone.js - Backbone.Model 未定义

backbone.js - 如何将 urlRoot 传递给 Backbone 中的模型

backbone.js - 如何在 Backbone.Collection 中传递变量而不是 url

javascript - Backbone.js 集合获取不起作用