2013-02-07 40 views
0

我有一個模型,我需要保存到JSON並根據需要重新加載。這個想法是,用戶可以將模型保存到籃子或數據庫(作爲JSON字符串),然後重新加載它。創建JSON並保存它很簡單,但重新加載看起來要困難得多。問題是,我的模型包括類似於淘汰賽聯繫人例如一些複雜的對象:保存和恢復包含嵌套的observableArrays的observableArray

http://knockoutjs.com/examples/contactsEditor.html

我甚至可以生成JSON和通過Web服務傳遞到.NET對象。

我已經看過了淘汰賽文檔加載數據模型:

http://knockoutjs.com/documentation/json-data.html

...我可以輕鬆地恢復我的「簡單」的觀測,但我不知道怎樣才能初始化我的複雜對象的數組,其中這些對象也包含可觀察數組。有任何想法嗎?

我甚至嘗試過使用映射插件,但生成的JSON不包含數組中的信息。

這樣做創建JSON和我的所有數據都在那裏:

var jsonData = JSON.stringify(ko.toJS(self.contacts), null, 2) 

理想情況下,我只需要扭轉這種或至少創建所有對象一個接一個。

爲尋找謝謝:)

回答

0

映射插件應該工作。我不知道如果我理解正確你的情況,但儘量some​​thig這樣的:

ViewModel = function() { 
    this.contacts = ko.observableArray(); 
} 

var model = new ViewModel(); 

ko.applyBindings(model); 

var json = '{"contacts":[{"name":"Tom","phones":["00000000","1111111111"]},{"name":"Bill","phones":["222222222","333333333"]},{"name":"Bert","phones":["444444444","55555555"]}]}'; 

ko.mapping.fromJSON(json, {}, model); 

的「聯繫人」和「手機」的observableArray在每個接觸從JSON字符串正確反序列化。

http://jsfiddle.net/k4Sth/1/

+0

好的,這看起來很有趣 - 我明天就試試看,並報告回來。感謝您的快速回復 :) – user2025399