我有使用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);
答案 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!');
我已经考虑过分叉,但它有点不值得。我只是对对象图进行后期处理,寻找包含对象的不可观察和的属性,并将它们转换为可观察的属性。