2012-10-18 32 views
1

我想知道Amplify是否可以輕鬆處理大量嵌套敲除可觀察對象的大數據模型。 目標是在頁面刷新後保存並恢復數據(視圖)模型的當前狀態。敲除 - 用放大保存狀態

從幾個例子看來,每個observable都需要擴展到使用本地存儲。 大概可以應用globaly,但我不知道嵌套可觀察對象將如何行爲。 (即viewModel有很多可觀察的變量,每個變量都包含具有更多可觀察變量的json對象等)。 是否可以保存viewModel的狀態,以便在頁面刷新後以適當的方式恢復所有嵌套的observables? (另一個問題可能是性能,因爲它必須在移動設備上使用)

有沒有人有這類問題的經驗?

+2

您可以使用映射插件將視圖模型序列化/反序列化爲JSON,然後使用放大來存儲該字符串。查看http://knockoutjs.com/documentation/plugins-mapping.html –

回答

1

這可以完成,我正在做。儘管我將它分解爲獨立的模塊來處理我的ajax調用和緩存。

需要注意的一點是,如果您存儲了帶有可觀察對象的整個挖空視圖模型,那麼在將其提取回來時,數據將不會被恢復。這是因爲你的觀測值是函數而不是數據本身。

爲此,您必須將可觀察視圖模型轉換爲正確的Javascript對象(如果使用映射插件,則使用ko.toJS或ko.mapping.toJS),然後將其存儲。當您檢索數據時,您必須通過視圖模型發送它以重新創建觀察值。

這並不像您想象的那麼昂貴。使用映射插件很容易做到這一點。但是,如果陣列中存在大量數據,那麼您應該重新考慮獲取大量數據,特別是移動設備。