2011-04-23 11 views
42

He estado experimentando con el módulo localstorage para Backbone.js (https://github.com/jeromegn/Backbone.localStorage). Según tengo entendido, esto sobrecarga Backbone.sync y, por lo tanto, impide que la red troncal empuje hacia el servidor (?). Idealmente, me gustaría transferir mis datos al servidor también y conservarlos localmente cuando esté en línea y simplemente usar el almacenamiento local cuando esté fuera de línea (ya sabes, la aplicación perfecta). No he encontrado ninguna documentación todavía.Backbone.js capaz de hacer el resto y el almacenamiento local?

¿Backbone.localStorage es parte de esto? ¿Alguien ha podido construir este escenario? ¿Cómo se hace esto? (Por favor dígame que no tengo que rodar el mío.)

Gracias.

Respuesta

45

Backbone.localStorage es un archivo externo que puede usar y sobrescribe Backbone.Sync.

Puede usar la detección de características simples para saber si el usuario está fuera de línea o en línea y luego cargar asincrónicamente Backbone.localStorage.js si están desconectados.

Si es necesario, también puede pasar una versión específica de Backbone.sync a sus modelos y colecciones.

Si quiere hacer ambas cosas al mismo tiempo, tendrá que escribir su propia versión de Backbone.sync que llame al servidor y llame a localStorage.

La manera más fácil de hacer esto es simplemente definir

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

Editar:

como se ha mencionado en los comentarios, si utiliza la última columna vertebral localStorage plugin a continuación, puede hacer lo siguiente

Backbone.sync = function Sync() { 
    Backbone.ajaxSync.apply(this, arguments); 
    return Backbone.localSync.apply(this, arguments); 
}; 
+0

Eso tiene sentido. Creo que tener ambos y luego soltar el original cuando no está conectado tiene más sentido (gracias por incluirlo). ¿Tienes alguna experiencia personal con estos escenarios? – LeRoy

+2

@LeRoy no, pero teniendo alguna detección de características alrededor del 'originalSync' para comprobar si su línea en línea tiene sentido. También asegúrese de hacer que el servidor real sea más "autoritario" que el de almacenamiento fuera de línea. Y ponga un sistema para monitorear los cambios realizados cuando no esté conectado y empújelos como un lote al servidor. – Raynos

+0

hay alguna aplicación de ejemplo a la que pueda hacer referencia para el almacenamiento local y la sincronización fuera de línea al mismo tiempo. – Pankaj

Cuestiones relacionadas