骨干提取ID已更改

时间:2014-10-01 15:40:39

标签: backbone.js backbone-model

具有模型提取行为,特别是设置模型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()来演示

jsbin for 1.1.0

jsbin for 1.1.2

1 个答案:

答案 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之间发生了变化

现在,支票仅考虑idAttribute描述的属性,而不再考虑id属性。

像在1.1.2示例中那样设置idAttribute可能是最安全的选择:

model.set('wibbleId', 123);