1

Я пытаюсь создать загрузку большего количества систем, где каждый раз, когда вы нажимаете на загрузку, вы добавляете данные в существующую коллекцию. Это приблизительный пример того, как выглядит пользовательский интерфейс.Добавление новых данных в базовое реляционное отношение

Все работает довольно большой, кроме как вы бы за исключением каждый раз, я вновь запустить

items.fetch 

Что он делает: Он перекрывает всю коллекцию с новыми данными

Что Я хочу это сделать: Я хочу, чтобы новые записи возвращались для добавления в коллекцию записей, не переопределяя старые «записи»

Как я могу сделать эту работу так, чтобы вновь взятые записи были добавлены к существующим записям, а не переопределены?

ответ

3

Добавить { remove: false } в свой fetch вызова:

items.fetch({ remove: false, data: { nextId: this.info.get('nextId') } }); 

Что здесь происходит, Collection#fetch будет синхронизировать свои модели с данными сервер возвращает. Это включает в себя добавление новых моделей, обновление уже существующих моделей и удаление моделей, которые не включены в ответ.

Поведение выборки можно настроить с помощью доступных опций set. Например, чтобы получить коллекцию, получить событие «добавить» для каждой новой модели и событие «изменить» для каждой измененной существующей модели, не удаляя ничего: collection.fetch ({remove: false})

Возможные варианты set: add, remove и merge. Установка одного (или всего) на false отключит эту функциональность в fetch.

Похоже, вы просто хотите { remove: false }, оставив add и merge функциональностью.

+0

oh wow, который будет потрясающим, если он действительно работает для магистральных отношений автоматически, я попробую это спасибо. Я предполагаю, что это будет работать идеально, если бы я делал выбор непосредственно в самой коллекции. Здесь выборка будет на родительской реляционной модели, которая имеет коллекцию как отношение. – user391986

+0

Это волшебное ... это работает, хотя я действительно не понимаю, как с тех пор, как коллекция не находится на фактическом объекте, где я вызываю fetch, но по отношению к самому себе! Это мило – user391986

1

Я не знаком с ,

Но с нормальной коллекцией, вы можете сделать следующее синтаксический метод:

Backbone.Collection.extend({ 
    parse: function(response){ 
    // you can update the info here like this.info = response.info or similar 
    return _.union(this.toJSON(), response.records); 
    } 
}); 

В основном мы зерноуборочный ответ с существующими данными и вернуть его так что мы поддерживаем предыдущие данные, когда коллекция обновляется