多个ViewModel的最佳实践

麦克风

我有一个包含3个逻辑部分的编辑页面:

  • 标头
  • 命令
  • 支付

允许用户一次编辑每个部分,并使用一个提交按钮提交更改。

就功能和用户正在编辑的对象而言,此页面很大。

发送到页面进行编辑的对象是一个JSON对象,具有一些未编辑但需要在提交时传递回的属性。

在这种情况下,最佳做法是具有以下VM结构:

  • 主虚拟机
    • 标头VM
    • 订购虚拟机
    • 付款虚拟机

我会将每个VM分配到页面的适当部分。将更改合并回主JSON对象以使我可以仅将一个对象提交到服务器的最简单方法是什么?

泰布利兹

页面拆分看起来很合逻辑,它本身不应该是一个问题。但是,如何进行操作有不同的方法,这给他们带来了挑战。

就像您建议的那样,“简单”的出路将是拥有带有子视图模型的树状主视图。我记得当我在一两年前开始使用Knockout时,这是推荐的方法。在香草JS中,您将获得类似以下内容的信息:

function childVM() { this.prop = ko.observable(0); }
function masterVM() { 
  this.children = ko.observableArray([new childVM(), new childVM()]); 
}

但是您也可以使用(甚至更确切地说)使用ko.components,毕竟,它专门用于将大型代码分解为模块的目的(并与RequireJS一起很好地工作)。(通过这种方式,您可以将组件彼此嵌入,尽管确实使它们相互依赖)。使用先前代码的组件示例:

ko.components.register('child', {
  viewModel: function childVM(params) { this.prop = ko.observable(0||params.number)},
  template: { element: 'child' }); //looks for tmpl with id 'child'
function masterVM() { 
  this.children = ko.observableArray([new childVM(), new childVM()]); 
}

通过这种方法,您还可以使用自定义元素,例如:<child params='{number: 4}></child>本质上,组件的工作方式与普通方法相同,不同之处在于它们是通过视图绑定到父对象的,而不是通过viewModel显式绑定的。下一步,将使子模型或组件能够相互通信,将使用发布订阅系统。详情请参阅这里:http : //www.knockmeout.net/2012/05/using-ko-native-pubsub.html

之后,要从不同的视图模型中获取数据,submit就像ko.mapping.toJS在每个子模型上使用调用一样简单(使用映射插件,它将所有可观察对象转换为常规JS),将它们组合在一起,字符串化为JSON并发送。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多个ViewModel的最佳实践

来自分类Dev

在一个ViewModel中绑定多个ObservableArrays的Knockout.js最佳实践

来自分类Dev

多个.Count用法的最佳实践

来自分类Dev

ViewModel和多线程最佳实践

来自分类Dev

Java方法返回多个值的最佳实践?

来自分类Dev

多个异步AJAX调用最佳实践

来自分类Dev

在多个容器中存储对象的最佳实践

来自分类Dev

管理多个UINavigationController堆栈的最佳实践

来自分类Dev

多个异步AJAX调用最佳实践

来自分类Dev

DI Unity在多个项目中-最佳实践

来自分类Dev

Symfony & Git:多个网站的最佳实践

来自分类Dev

ASP.NET MVC中的最佳实践ViewModel验证

来自分类Dev

从SQL Server的多个表中删除许多记录的最佳实践

来自分类Dev

在类中具有多个锁对象的最佳实践

来自分类Dev

Git最佳实践一个或多个分支

来自分类Dev

实体框架中多个“包含”的最佳实践是什么?

来自分类Dev

具有多个相似实体的数据库最佳实践

来自分类Dev

AngularJS中多个$ http请求的最佳实践是什么?

来自分类Dev

最佳实践WebAPI和多个数据库

来自分类Dev

从多个抽象级别处理错误的最佳实践

来自分类Dev

React&Redux:connect()到多个组件和最佳实践

来自分类Dev

最佳实践/ jQuery:为日期过滤多个JSON提要

来自分类Dev

Drake R中多个子计划的最佳实践

来自分类Dev

在多个git仓库中组织Kubernetes对象的最佳实践?

来自分类Dev

Azure DevOps为多个YMLS建立最佳实践

来自分类Dev

最佳实践:页面上有多个CoffeeScript文件

来自分类Dev

整合多个Javascript文件的最佳实践是什么?

来自分类Dev

Jenkins最佳实践-NFS在多个从站上安装工作区

来自分类Dev

在UL标签中使用多个标题的最佳实践是什么

Related 相关文章

热门标签

归档