Backbone.js может делать отдых и локальное хранилище?

Я экспериментировал с модулем localstorage для Backbone.js (https://github.com/jeromegn/Backbone.localStorage). Насколько я понимаю, это перегружает Backbone.sync и, следовательно, не позволяет магистрали отправлять данные на сервер (?). В идеале я хотел бы также передавать свои данные обратно на сервер и сохранять их локально в сети и просто использовать локальное хранилище в автономном режиме (вы знаете, идеальное приложение). Я пока не нашел никакой документации.

Является ли Backbone.localStorage частью этого? Кто-нибудь смог построить этот сценарий? Как это делается? (Пожалуйста, скажите мне, что мне не нужно сворачивать свои собственные.)

Спасибо.


person LeRoy    schedule 23.04.2011    source источник


Ответы (1)


Backbone.localStorage — это внешний файл, который вы можете использовать, перезаписывая Backbone.Sync.

Вы можете использовать простое определение функции для того, находится ли пользователь в автономном режиме или в сети, а затем асинхронно загрузить Backbone.localStorage.js, если он находится в автономном режиме.

При необходимости вы также можете передать конкретную версию Backbone.sync в свои модели и коллекции.

Если вы хотите сделать и то, и другое одновременно, вам придется написать свою собственную версию Backbone.sync, которая одновременно вызывает сервер и вызывает localStorage.

Самый простой способ сделать это - просто определить

Backbone.sync = function() {
    originalSync.apply(this, arguments);
    localStorageSync.apply(this, arguments);
}

Изменить:

Как упоминалось в комментариях, если вы используете последний плагин localStorage, вы можете сделать следующее:

Backbone.sync = function Sync() {
    Backbone.ajaxSync.apply(this, arguments);
    return Backbone.localSync.apply(this, arguments);
};
person Raynos    schedule 23.04.2011
comment
В этом есть смысл. Я думаю, что иметь оба, а затем удалить оригинал в автономном режиме, имеет смысл (спасибо, что включили его). Есть ли у вас личный опыт работы с этими сценариями? - person LeRoy; 23.04.2011
comment
@LeRoy нет, но есть некоторые функции обнаружения вокруг originalSync, чтобы проверить, имеет ли смысл ваш онлайн. Также не забудьте сделать реальный сервер более авторитетным, чем автономное хранилище. И поместите систему для отслеживания изменений, сделанных в автономном режиме, и отправляйте их в виде пакета на сервер. - person Raynos; 24.04.2011
comment
есть ли какой-либо пример приложения, которое я могу использовать для локального хранилища + автономной синхронизации одновременно. - person Pankaj; 03.08.2011
comment
@Pankaj используйте событие ononline - person Raynos; 03.08.2011
comment
Возможно, стоит отметить, что в репозитории github для этого плагина есть несколько запросов на включение, которые имеют схожие цели: one включает, например, сохранение ссылки на исходный Backbone.sync как Backbone.ajaxSync. - person ; 24.09.2011
comment
В ответ на примечание @pat был принят запрос на включение 2011-12-28. При использовании подключаемого модуля localstorage Backbone.sync сохраняет в локальное хранилище, тогда как Backbone.ajaxSync использует собственный Backbone.sync. - person tex; 11.01.2012
comment
Куда это на самом деле идет, вот мой вопрос stackoverflow, чтобы вы могли видеть код, с которым я работаю... stackoverflow.com/questions/19469079/ - person Lion789; 19.10.2013