que pasa oculta mis memoria fotos cache bueno borro borrar borran javascript ember.js ember-data

javascript - pasa - ¿Por qué estos registros no están almacenados en el caché?



que pasa si borro el cache de whatsapp (1)

this.store.find(''type'') siempre realizará una llamada al servidor para registros. Si solo desea hacer una llamada al servidor una vez, hágalo en ApplicationRoute y luego, en lugar de usar find use all filtros dentro de la ruta que se golpea varias veces.

Pd.ApplicationRoute = Em.Route.extend({ model: function(params){ return Em.RSVP.hash({ product: this.store.find(''product''), somethingElse: otherPromise }) } }); Pd.ProductRoute = Em.Route.extend({ model: function(params){ return this.store.all(''product''); } });

Si solo desea preparar la tienda con sus productos, ni siquiera necesita devolverla o utilizarla en la ruta de la aplicación.

Pd.ApplicationRoute = Em.Route.extend({ model: function(params){ this.store.find(''product''); return {foo:''bar''}; // or return nothing, it doesn''t matter } });

Lazy cargando los modelos

App.ProductRoute = Ember.Route.extend({ hasPreLoaded: false, model: function() { if(this.get(''hasPreLoaded'')){ return this.store.all(''product''); } else { this.toggleProperty(''hasPreLoaded''); return this.store.find(''product''); } } });

Ejemplo

http://emberjs.jsbin.com/OxIDiVU/482/edit

No define la clave primaria en el adaptador, va en el serializador

Pd.ProductSerializer = DS.RESTSerializer.extend({ primaryKey: ''nid'' });

La caché ya no vive allí, vive en this.store.typeMapFor(Pd.Product) o this.store.typeMaps .

El sitio sigue haciendo referencia a una versión anterior de los datos de ascua hasta que se publique la versión 1.0 de los datos, supongo que está utilizando la versión 1.0 beta. Este documento está más actualizado https://github.com/emberjs/data/blob/master/TRANSITION.md

Me gustaría guardar mis registros una vez que los reciban, pero no puedo entender cómo. De acuerdo con la Documentación, puede simplemente llamar a this.store.push(''model'', record) , pero parece que no funciona. Ember solicita los datos del servidor con cada llamada de la ruta; me gustaría hacerlo solo una vez y usar la tienda local una vez que se haya extraído del servidor.

Si intento depurarlo como lo sugiere la Documentación , entiendo que no hay caché:

Pd.__container__.lookup(''store:main'').recordCache // --> undefined

Esta es mi ruta (donde intento guardarla en la memoria caché):

Pd.ProductsRoute = Ember.Route.extend({ model: function () { var promise = this.store.find(''product''); var that = this; promise.then(function(value) { // Caching supposed to happen here value.content.forEach(function(product){ that.store.push(''product'', product); }); }, function(reason) { // on rejection }); return promise; } });

Y este el adaptador de acuerdo (parece funcionar bien):

Pd.ProductAdapter = DS.RESTAdapter.extend({ primaryKey: ''nid'', // DOES NOT WORK BUT I CAN LIVE WITH THAT (SEE WORKAROUND) findAll: function(store, type) { var url = ''ws/rest/products''; return new Ember.RSVP.Promise(function(resolve, reject) { jQuery.getJSON(url).then(function(data) { Ember.Logger.debug("Received Products:"); // TRIGGERS EVERY TIME! var srcPattern = /src=["'']([^''"]+)/; data.forEach(function(product){ product.id = product.nid; product.field_image = srcPattern.exec(product.field_image)[1]; }); Ember.Logger.debug(data); Ember.run(null, resolve, {product: data}); }, function(jqXHR) { jqXHR.then = null; // tame jQuery''s ill mannered promises Ember.run(null, reject, jqXHR); }); }); } });