【问题标题】:Knockout view model serialize to db and retrieve淘汰视图模型序列化到数据库并检索
【发布时间】:2016-05-05 16:54:01
【问题描述】:

我有一个使用淘汰赛的网络表单,我必须实现一个新功能来将表单作为草稿保存到数据库,然后再次加载以修改或提交。

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

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

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);

【问题讨论】:

    标签: javascript json mvvm knockout.js


    【解决方案1】:

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

    var someJSON = /* fetched the saved viewmodel as a json */;
    var parsed = JSON.parse(someJSON);
    
    // Update view model properties
    viewModel = ko.mapping.fromJS(data);
    

    【讨论】:

      【解决方案2】:

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

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

      var pojo = {
          someStringProperty: 'lol',
          someObjectProperty: { }
      };
      
      var vm = ko.mapping.fromJS(pojo);
      
      if(!ko.isObservable(vm.someObjectProperty)) console.log('FAIL!');
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-15
        • 2013-07-08
        • 2012-11-09
        • 2012-11-29
        相关资源
        最近更新 更多