KnockoutJS - 主视图中的多个局部视图?

som*_*son 11 javascript model-view-controller knockout.js

我试图将现有的asp mvc app移植到使用knockoutjs(纯js/html),因为我不再需要asp mvc中的任何功能.然而,我可以预见的一个问题是我处理我的一些页面的方式.

我有一个页面,其中包含大约12个局部视图,每个部分都有自己的模型.现在使用Knockout JS看起来每页应该只有1个viewmodel/view,但是我的页面包含大量信息,这些部分类似于:

  • 顾客信息
  • 客户地址
  • 客户近期订单
  • 客户卡
  • 客户资金
  • ...

如果部分细节发生变化,使事情变得更加棘手,则需要更改另一部分的数据.所以,让我们说你删除一张卡然后需要告诉资金控制它不再有卡,所以不会有资金.(这是一个抽象的例子,但希望说明一点)

所以我有点不确定如何在淘汰赛中做到这一点,因为我宁愿将它作为一个大型模型,我会很乐意做,但它包含大量的信息.除了多个表单,您可以更新地址而无需更新其他所有内容.

那么我应该为这个视图制作一个大型模型并处理它吗?或者有没有办法让观点相互交谈?

nee*_*ebz 3

我的策略是使用一个大视图模型。不管你怎么说,分部视图都是一个服务器端的概念,一旦一切都传输到客户端,那么单个页面中将包含大量的数据信息。

然而,为了使事情易于管理,我确保每个 Javascript 操作代码都是在它自己的部分视图中编写的。这使得跟踪功能及其各自的代码变得更加容易。

因此,基本上,您在主页中填充主客户数组对象,然后调用函数来填充分别在每个部分视图中定义的详细信息、地址等。

  • 顺便说一句,我刚刚意识到您还可以通过将部分视图封装在 div 中然后调用 `ko.applyBinding(partialViewModel, "id of div")` 来应用多个绑定。第二个参数描述了将绑定应用到的位置。 (2认同)