Javascript 敲除视图模型序列化到db并检索

Javascript 敲除视图模型序列化到db并检索,javascript,json,mvvm,knockout.js,Javascript,Json,Mvvm,Knockout.js,我有一个使用敲除的web表单,我必须实现一个新功能,将表单作为草稿保存到db,然后再次加载以修改或提交 敲除框架上是否有任何功能可以将viewmodel序列化为我可以保存到db的任何其他形式(如json)。然后稍后加载它并轻松填充我的视图 我知道我可以将viewmodel作为json保存到db,然后我可以加载它并填充视图模型上的每个属性,如下所示。但是我正在寻找一个像serialize这样的功能,然后使用它一次填充整个viewmodel。我有很多属性,我不想通过编写如下代码行来填充每个属性 va

我有一个使用敲除的web表单,我必须实现一个新功能,将表单作为草稿保存到db,然后再次加载以修改或提交

敲除框架上是否有任何功能可以将viewmodel序列化为我可以保存到db的任何其他形式(如json)。然后稍后加载它并轻松填充我的视图

我知道我可以将viewmodel作为json保存到db,然后我可以加载它并填充视图模型上的每个属性,如下所示。但是我正在寻找一个像serialize这样的功能,然后使用它一次填充整个viewmodel。我有很多属性,我不想通过编写如下代码行来填充每个属性

var someJSON = /* fetched the saved viewmodel as a json */;
var parsed = JSON.parse(someJSON);

// Update view model properties
viewModel.firstName(parsed.firstName);
viewModel.pets(parsed.pets);
使用该插件并用该插件替换您的代码:

var someJSON = /* fetched the saved viewmodel as a json */;
var parsed = JSON.parse(someJSON);

// Update view model properties
viewModel = ko.mapping.fromJS(data);

您可以像这里提到的其他问题一样使用映射插件,但它肯定不是完美的

最值得注意的是,如果您有对象属性,它们将不会转换为可观察对象

var pojo = {
    someStringProperty: 'lol',
    someObjectProperty: { }
};

var vm = ko.mapping.fromJS(pojo);

if(!ko.isObservable(vm.someObjectProperty)) console.log('FAIL!');
我已经研究过分叉,但这不值得。我只是对对象图进行后期处理,查找不可观察的属性和包含对象的属性,并将它们转换为可观察的属性