У меня есть базовая коллекция, в которой пользователи выполняют действия типа CRUD. Я хочу отложить любые изменения от распространения на сервер - Collection.sync()
не должен происходить, пока пользователь не инициирует его (например, POSTING
).Отложить синхронизацию коллекции Backbone.js с сервером
Как бы то ни было, я смог внедрить «на лету» обновления без проблем (путем вызова таких вещей, как Model.destroy()
на моделях при удалении, или Collection.add()
, чтобы добавить новые модели в коллекцию. Насколько я понимаю, я может передать опцию {silent:true}
в моей модели, предотвращая .sync()
от вызова во время .add()
/.destroy()
, но от того, что я могу сказать, что может привести к некоторому headaches later.
Я рассмотрел перекрывая Backbone.sync
, но я не уверен, если это лучший способ - я чувствую, что есть какой-то способ подключиться к некоторым событиям, но я не уверен. Конечно, я прочитал документы Backbone, аннотированный sou rce и соответствующие вопросы SO перед публикацией этого, но я ударил стену, пытаясь экстраполировать эту ситуацию.
В конце концов, мне нужно будет реализовать это во многих местах моего приложения, поэтому я обеспокоен лучшими практиками на этом этапе. Я ищу несколько советов/предложений/соображений о том, как продолжать предотвращать поведение по умолчанию, которое немедленно синхронизирует изменения с удаленным сервером. Любая помощь приветствуется - спасибо за ваше время!
EDIT:
Я пошел с предложением Alex P о рефакторинге: в моей коллекции я создал некоторые атрибуты для отслеживания моделей, которые были отредактированы, добавлен или удален. Затем, когда пользователь запускает действие сохранения, я повторяю списки и выполняю соответствующие действия.
Нет ничего плохого в '{silent: true}', он существует из-за этих ситуаций _rare_. –
@akoskm: Спасибо! Похоже, вы подразумеваете, что это необычный случай использования - вы думаете, что я рассматриваю эту функцию с плохой точки зрения? Я чувствую, что то, что я здесь, не слишком сумасшедший, но, основываясь на своем исследовании, я все время чувствую, что я пытаюсь сделать то, что не рекомендуется или не предлагается. –
Если это заставляет вас чувствовать себя лучше, я тоже использую его. :) И я делаю это в производстве, а не в приложении Todo. '{silent: true}' решил ту же проблему для меня. Если вы ищете решение, которое работает, то идите с этим. –