Невозможно добавить модель в коллекцию позвоночника - PullRequest
3 голосов
/ 09 февраля 2012

У меня есть модель, которая имеет кучу атрибутов, но здесь интересуют два: id и key. key всегда уникально, id не так уж и много. Когда я пытаюсь добавить в коллекцию более одной модели с одинаковым id, я получаю эту ошибку:

Uncaught Error: Can't add the same model to a collection twice

Я предполагаю, что это потому, что магистраль использует id, чтобы решить, являются ли две модели ===. Это верно? Если да, есть ли способ переопределить это поведение без замены имени атрибутов id и key? Я пытался возиться с коллекцией comparator, но безрезультатно ...

Ответы [ 2 ]

8 голосов
/ 09 февраля 2012

Да, магистраль использует и управляет атрибутом id модели для идентификации. Если в ваших данных используется другое свойство, вы можете установить для модели idAttribute имя вашего свойства, чтобы магистральная линия считывала идентификатор из этого свойства:

var Entry = Backbone.Model.extend({
    idAttribute: "key"
});

var entry = new Entry({ key: 1, name: "an entry" });
alert("entry id: " + entry.id);

Однако вы не можете одновременно использовать свойство модели id для чего-либо еще.

0 голосов
/ 29 августа 2013

Backbone не позволяет нам вставлять одну и ту же модель в одну коллекцию ... Вы можете видеть это в строке 676 backbone.js к строке 700

если вы действительно хотите вставить те же модели в коллекцию, просто удалите код там

if(existing = this.get(model)){//here
      ...
}
...