【问题标题】:Knockout.js - Multiple ViewModels per page; page-wide functions with different model contextsKnockout.js - 每页多个 ViewModel;具有不同模型上下文的页面范围函数
【发布时间】:2013-05-14 16:00:10
【问题描述】:

我正在构建一个巨大的页面,上面有多个表单,用户将按顺序填写。

我想让每个部分都有自己的模型,并计划拥有一个导入子模型的 masterViewModel。

但是,每个部分都有具有相同功能的编辑和保存按钮:

  1. 编辑将模型切换到编辑模式
  2. Save 验证输入,保存数据(通过 ajax),并切换回模型的状态

按钮集之间的唯一区别是它们的模型上下文。

我无法使用 masterViewModel/subViewModels 制作可引用不同模型的页面级保存和编辑功能。

有人对此有任何指导吗?

谢谢。

【问题讨论】:

    标签: knockout.js knockout-2.0


    【解决方案1】:

    如果你的根视图模型上有一个函数,那么你可以从任何地方调用它,比如click: $root.save

    当 Knockout 调用该函数时,它会将上下文 (this) 设置为当前数据,并将其作为第一个参数传递。因此,第一个参数将包含您当前的模型,您可以从那里处理它。

    这是一个示例:http://jsfiddle.net/rniemeyer/v22gd/

    var viewModel = {
        one: {
            name: ko.observable("Bob")   
        },
        two: { 
            name: ko.observable("Sue")
        },
        save: function(model) {
            alert(ko.toJSON(model));
        }
    };
    
    ko.applyBindings(viewModel);
    

    带有如下标记:

    <div data-bind="with: one">
        <input data-bind="value: name" />
        <button data-bind="click: $root.save">Save</button>
    </div>
    
    <div data-bind="with: two">
        <input data-bind="value: name" />
        <button data-bind="click: $root.save">Save</button>
    </div>
    

    【讨论】:

      猜你喜欢
      • 2012-12-12
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多