У меня есть коллекция, которая задает модель, которая сама имеет набор idAttribute, так как мой бэкэнд использует настраиваемое поле для первичного ключа. Код выглядит так:Невозможно получить idAttribute для работы в Backbone
var SearchItemModel = Backbone.Model.extend({
idAttribute: 'searchDefId'
});
var savedSearchesCollection = new SavedSearchesCollection({
model: SearchItemModel
});
Это мое понимание того, что я должен быть в состоянии найти модель, делая that.collection.get(searchDefIdValue)
, но я не могу. Ниже вы можете видеть, что моя коллекция имеет две модели. Если я попытаюсь получить модель, основанную на силе Backbone's 'c44', тогда это не вызовет проблем. Но если я попытаюсь выполнить поиск по пользовательскому полю id 'searchDefId', он не сможет его найти. Я думал, что Backbone должен был скопировать значение idAttribute в id, но я не вижу никакого поля «id».
Также обратите внимание, что я могу найти модель, используя that.collection.where({ searchDefId: data.searchDefId})[0]
, но похоже, что это может быть дороже.
И обычно вы бы указать 'модель: SearchItemModel' при создании' SavedSearchesCollection', а не при создании экземпляра коллекции. –
Не повезло. Я уверен, что это необязательный параметр. В противном случае, как будет выглядеть представление вообще. –
@muistooshort: Как и большинство вещей в Backbone, вы можете указать его в классе или при создании экземпляра. Сам протокол Backbone показывает, что это делается в обоих направлениях: http://backbonejs.org/#Collection –