根据我的理解,Backbone JS Models 的默认行为是返回Collection的URL,除非指定了model的
根据文档:
urlRoot
。但我好像无法使此行为生效。根据文档:
以下是我的Collection和Model:model.url() ... 默认情况下生成类似"[collection.url]/[id]"的URL,但如果不考虑模型的集合,则可以通过指定显式的urlRoot来覆盖它。
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
应该覆盖这种行为;即使如此,模型的URL也应该是/theurl/param/{MODEL-ID}
。
你对我忽略/误解了什么有什么想法吗?
...
附注:来自集合的model: Model
通过RequireJS引入。
yourModel.save({}, { url: yourModel.urlRoot });
。目前的写法会将对象上的url
属性设置为第一个参数是属性哈希表,而不是 URL。 - flyingL123