Tôi cần sử dụng localStorage để lưu trữ một số đối tượng Ember. Tôi nhận thấy rằng các đối tượng Ember có các thuộc tính với các tên như __ember1334992182483
. Khi tôi gọi JSON.stringify()
trên các đối tượng Ember, các thuộc tính __ember*
này không được đăng. Tại sao điều này? Tôi không nói rằng tôi muốn tuần tự hóa các thuộc tính đó. Tôi chỉ tò mò về chính xác chúng là gì và chúng được thực hiện như thế nào mà chúng không được sắp xếp theo thứ tự.Làm cách nào để nối tiếp các đối tượng Ember?
Tôi đang sử dụng cycle.js (https://github.com/douglascrockford/JSON-js/blob/master/cycle.js) để mã hóa cấu trúc dữ liệu có chứa tham chiếu trùng lặp thành chuỗi có thể được sử dụng để xây dựng lại cấu trúc dữ liệu gốc. Nó cho phép bạn làm điều này:
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
Đối với đối tượng Ember tôi có thể làm điều tương tự, nhưng tôi cũng cần phải vượt qua các đối tượng deserialised vào Ember.Object.create()
vì họ đang deserialised như đối tượng JavaScript đơn giản.
Đây có phải là cách tốt nhất để sắp xếp/deserialise các đối tượng Ember? Có một kỹ thuật được đề nghị cho việc này không?
Tại sao các '__ember * ' các thuộc tính không có trong đầu ra của 'JSON.stringify()'? – hekevintran
Tôi phải đoán ở đây vì tôi không phải là chuyên gia về JavaScript: nhưng nếu bạn thực hiện 'for (prop in obj) {}' trên 'Ember.Object', không có' __ember * 'nào được liệt kê và kiểm tra' obj.hasOwnProperty' chỉ trả về true cho các thuộc tính được định nghĩa, xem http://jsfiddle.net/pangratz666/w53DH/. – pangratz
Thuộc tính '__ember *' không được liệt kê trong vòng lặp 'for ... in'. Làm 'App.obj.hasOwnProperty ('__ ember1335029966963')' trả về 'true'. – hekevintran