具有模型提取行为,特别是设置模型ID,在1.1.0和1.1.2之间改变了吗?
我已检查过更改日志,但无法找到相关内容。
以下不再适用:
var Wibble = Backbone.Model.extend({
urlRoot: 'rest/wibble',
idAttribute: 'wibbleId'
});
var model = new Wibble();
model.id = 1;
model.fetch()
它请求/ rest / wibble而不是/ rest / wibble / 1。
示例:我使用了url()而不是fetch()来演示
答案 0 :(得分:3)
模型通过在模型不是新的时附加/[id]
来构建其URL:
url: function() {
var base = _.result(this, 'urlRoot') ||
_.result(this.collection, 'url') ||
urlError();
if (this.isNew()) return base;
return base.replace(/([^\/])$/, '$1/') + encodeURIComponent(this.id);
}
但似乎model.isNew
在1.1.0和1.1.2之间发生了变化
isNew: function() {
return this.id == null;
},
isNew: function() {
return !this.has(this.idAttribute);
},
现在,支票仅考虑idAttribute
描述的属性,而不再考虑id
属性。
像在1.1.2示例中那样设置idAttribute
可能是最安全的选择:
model.set('wibbleId', 123);