我正在构建一个巨大的页面,上面有多个表单,用户将按顺序填写。
我想让每个部分都有自己的模型,并计划拥有一个导入子模型的 masterViewModel。
但是,每个部分都有具有相同功能的编辑和保存按钮:
- 编辑将模型切换到编辑模式
- Save 验证输入,保存数据(通过 ajax),并切换回模型的状态
按钮集之间的唯一区别是它们的模型上下文。
我在制作可以使用 masterViewModel/subViewModels 引用不同模型的页面级保存和编辑功能时遇到问题。
有人对此有任何指导吗?
谢谢。
我正在构建一个巨大的页面,上面有多个表单,用户将按顺序填写。
我想让每个部分都有自己的模型,并计划拥有一个导入子模型的 masterViewModel。
但是,每个部分都有具有相同功能的编辑和保存按钮:
按钮集之间的唯一区别是它们的模型上下文。
我在制作可以使用 masterViewModel/subViewModels 引用不同模型的页面级保存和编辑功能时遇到问题。
有人对此有任何指导吗?
谢谢。
如果你的根视图模型上有一个函数,那么你可以从任何地方调用它,比如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>