Backbone.js умеет делать отдых и местное хранилище? - PullRequest
43 голосов
/ 23 апреля 2011

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

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

Спасибо.

1 Ответ

45 голосов
/ 23 апреля 2011

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);
};
...