2016-01-25 3 views
0

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

Примером может служить кнопка «перезагрузить» и кнопку «подтвердить все».

Я столкнулся с ошибкой, при которой многократно ударяя «перезагрузку», вы получаете дубликаты предметов в коллекции. Я пытаюсь вернуться к основам и понять, что является рекомендуемым способом передачи изменений модели между моделью и сборкой в ​​составном виде.

Может кто-нибудь помочь?

+1

Не могли бы вы показать соответствующий код, который вы написали? :) – Tholle

ответ

0

Если вы используете Marionette CollectionView или CompositeView, они будут повторно отображать, чтобы отразить то, что находится в вашей коллекции, поэтому ваша коллекция должна содержать повторяющиеся модели.

Что вы звоните в ваш метод refresh? Похоже, вот в чем проблема. Если вы хотите обновить свою коллекцию, чтобы отразить то, что находится на сервере, вы должны вызвать метод fetch() в коллекции. Поведение по умолчанию - объединить текущий сбор и данные, полученные с сервера.

Если это все еще вызывает дубликаты, это может быть ошибка с данными, возвращаемыми с сервера - например, если идентификаторы не включены.

Если вы хотите полностью заменить текущую коллекцию данными, возвращаемыми с сервера, вы можете передать {reset: true} на вызов fetch, но это не рекомендуется, так как вы будете полностью перерисовывать каждую строку в таблице каждый раз вы обновляете.