27cm
@27cm
TODO: Написать статус

Как запретить добавлять объекты в коллекцию, если подобные в ней уже есть?

Как можно реализовать, чтобы коллекция игнорировала попытки добавить в неё модель, имеющую определённый атрибут, значение которого совпадает с одной из имеющихся в коллекции, только если не передана опция {merge: true}?

Пример:
var Model = Backbone.Model.extend({
    defaults: {
        prop: null,
    }
});
var Collection = Backbone.Collection.extend({
    model: Modal
});

var test = new Collection([{prop: "A"}, {prop: "B"}, {prop: "A"}]); 
// В коллекцию попадут только 2 объекта: {prop: "A"} и {prop: "B"}

test.add({prop: "B"}); // в коллекцию ничего не добавится
test.add({prop: "B"}, {merge: true}); // в коллекцию добавится ещё один {prop: "B"}
  • Вопрос задан
  • 2298 просмотров
Решения вопроса 2
mlnkv
@mlnkv
JavaScript Developer
можно так попробовать
jsbin.com/buzoqu/1/edit?js,output

но правильней будет, наверное, так
jsbin.com/sohuq/3/edit
Ответ написан
@personaljs
Можно задать в качестве idAttribute модели ваше свойство и тогда он не будет затирать их. Но это в том случае если у вас больше нет других уникальных ключей в модели

jsbin.com/caraziroqezu/1
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы