Подтвердить что ты не робот

Найти модель в коллекции Backbone.js cid, а не id

Можно ли использовать Collection.get(id), чтобы найти модель в коллекции Backbone.js cid, для модели, еще не сохраненной на сервере?

Из документации, похоже, что .get должен найти модель либо своим id, либо cid. Однако collection.get(cid) не находит модель, тогда как это делает, collection.find(function(model) {return model.cid===cid; }). Предположительно я пропускаю что-то основное.

jsFiddle, например, ниже

var Element = Backbone.Model.extend({});
var Elements = Backbone.Collection.extend({ model:  Element });

var elements = new Elements(), el, cids = [];

for (var i=0; i<4; i++) {
    el = new Element({name: "element"+i})
    elements.add(el);
    cids.push(el.cid);
}

console.log(cids);
el1 = elements.get(cids[0]);     
console.log(el1);  // undefined


el1a = elements.find(function(model) { return model.cid === cids[0]; });
console.log(el1a);  // success

Backbone.js - id vs idAttribute vs cid

4b9b3361

Ответ 1

В базовой области 0.9.9 (см. журнал изменений) они удалили метод .getByCid() и сфотографировали эту функцию непосредственно в .get() - если вы используете ниже 0.9.9, вы можете использовать метод .getByCid(); Я думаю, что с тех пор они удалили его из документов, чтобы отразить самое текущее состояние библиотеки.

Edit:

Подробнее см. комментарий @Ferdinand Prantl ниже, но передача cid в качестве свойства литерала объекта выполнит то, что вы ищете здесь: .get({ cid: "xxx" }). Приношу свои извинения за любую путаницу.