Devo usare localStorage per memorizzare alcuni oggetti di tipo Ember. Ho notato che gli oggetti Ember hanno proprietà con nomi come __ember1334992182483
. Quando chiamo JSON.stringify()
su oggetti Ember, queste proprietà __ember*
non sono serializzate. Perchè è questo? Non sto dicendo che voglio serializzare quelle proprietà. Sono solo curioso di sapere esattamente cosa sono e come sono implementati in modo tale da non essere serializzati.Come si serializzano oggetti Ember?
Sto usando cycle.js (https://github.com/douglascrockford/JSON-js/blob/master/cycle.js) per codificare le mie strutture di dati che contengono riferimenti duplicati in una stringa che può essere utilizzata per la ricostruzione delle strutture di dati originali. Ti permette di fare questo:
a = {a:1}
b = {b:1}
c = [[a, b], [b, a]]
foo = JSON.stringify(JSON.decycle(c)) // "[[{'a':1},{'b':1}],[{'$ref':'$[0][1]'},{'$ref':'$[0][0]'}]]"
JSON.retrocycle(JSON.parse(foo)) // reconstruct c
Per gli oggetti tempora che posso fare la stessa cosa, ma ho anche bisogno di passare gli oggetti deserialised in Ember.Object.create()
perché sono deserialised come oggetti JavaScript pianura.
È questo il modo migliore per serializzare/deserializzare gli oggetti di legno? C'è una tecnica consigliata per questo?
Perché sono il '__ember *' proprietà non nell'output di 'JSON.stringify()'? – hekevintran
Devo indovinare da quando non sono un esperto di JavaScript: ma se fai un 'for (prop in obj) {}' su un 'Ember.Object', non viene elencato' __ember * 'e un controllo per' obj.hasOwnProperty' restituisce solo true per le proprietà definite, vedere http://jsfiddle.net/pangratz666/w53DH/. – pangratz
Le proprietà '__ember *' non vengono elencate nel ciclo 'for ... in'. Facendo 'App.obj.hasOwnProperty ('__ ember1335029966963')' restituisce 'true'. – hekevintran