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

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

Из документации кажется, что.get должен найти модель по ее идентификатору или 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 против IDAttribute против CID

1 ответ

Решение

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

Редактировать:

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

Другие вопросы по тегам