Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保存和恢复包含嵌套ObserverArray的ObserverArray_Javascript_Json_Knockout.js - Fatal编程技术网

Javascript 保存和恢复包含嵌套ObserverArray的ObserverArray

Javascript 保存和恢复包含嵌套ObserverArray的ObserverArray,javascript,json,knockout.js,Javascript,Json,Knockout.js,我有一个模型,我需要将其保存到JSON并根据需要重新加载。其思想是用户可以将模型保存到一个篮子或数据库(作为JSON字符串),然后重新加载它。创建并保存JSON非常简单,但重新加载似乎要困难得多。问题在于,我的模型包含一些类似于击出联系人示例的复杂对象: 我甚至可以生成JSON并通过web服务将其传递到.NET对象中 我已经看过了加载数据模型的淘汰文档: …我可以很容易地恢复我的“简单”观察值,但我不知道如何初始化复杂对象的数组,因为这些对象也包含观察值数组。有什么想法吗 我甚至尝试过使用映

我有一个模型,我需要将其保存到JSON并根据需要重新加载。其思想是用户可以将模型保存到一个篮子或数据库(作为JSON字符串),然后重新加载它。创建并保存JSON非常简单,但重新加载似乎要困难得多。问题在于,我的模型包含一些类似于击出联系人示例的复杂对象:

我甚至可以生成JSON并通过web服务将其传递到.NET对象中

我已经看过了加载数据模型的淘汰文档:

…我可以很容易地恢复我的“简单”观察值,但我不知道如何初始化复杂对象的数组,因为这些对象也包含观察值数组。有什么想法吗

我甚至尝试过使用映射插件,但生成的JSON不包含数组中的信息

这样做会创建JSON,我的所有数据都在其中:

var jsonData = JSON.stringify(ko.toJS(self.contacts), null, 2)
理想情况下,我只需要将其反转,或者至少一个接一个地创建所有对象

谢谢查看:)

映射插件应该可以工作。我不确定我是否正确理解了你的情况,但请尝试这样做:

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);
每个联系人中的“联系人”和“电话”的ObservalArray都是从json字符串中正确反序列化的


好的,看起来很有趣-我明天会试试,然后回来汇报。感谢您的快速回复:)