идентификатор выборки магистрали изменился

Изменилось ли поведение выборки модели, особенно установка идентификатора модели, между 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 для 1.1.0

jsbin для версии 1.1.2


person tunny    schedule 01.10.2014    source источник


Ответы (1)


Модель создает свой URL-адрес, добавляя /[id], если модель не новая:

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.

Установка вашего idAttribute, как вы сделали в своем примере 1.1.2, вероятно, самая безопасная ставка:

model.set('wibbleId', 123);
person nikoshr    schedule 01.10.2014