Knockout视图模型序列化为db并检索

时间:2016-01-28 10:50:45

标签: javascript json mvvm knockout.js

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

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

我知道我可以将viewmodel保存为json到db,然后我可以加载它并在视图模型上填充每个属性,如下所示。但我正在寻找像序列化这样的功能,然后立即使用它填充整个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);

2 个答案:

答案 0 :(得分:0)

使用mapping插件并将代码替换为:

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

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

答案 1 :(得分:0)

您可以使用映射插件,如此处提到的其他问题,但它绝对不是完美的。

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

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

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

if(!ko.isObservable(vm.someObjectProperty)) console.log('FAIL!');

我已经考虑过分叉,但它有点不值得。我只是对对象图进行后期处理,寻找包含对象的可观察的属性,并将它们转换为可观察的属性。