我看到在 knockout.js 中讨论多个视图模型时通常会有些混淆
ko 文档并没有真正解释如何处理多个视图模型,如何在它们之间进行通信或何时应该考虑它们。
我发现这个网站解释了创建多个视图模型的不同方法以及如何与它们交互。
我试了一下,创建了一个包含不同子模型的主模型:
var MasterModel = function(){
this.orders = new ordersViewModel(),
this.dates = new datesViewModel(),
this.equipment = new equipmentViewModel();
};
在那之后,我发现自己不得不with: nameOfModel
在很多地方使用(并为其创建额外的包装器或 HTML 注释),甚至只是使用视图模型的名称作为前缀data-bind="foreach: orders.getList()"
。
除此之外,还有它们之间的通信问题,虽然可以通过某种方式解决,但似乎不像处理单个视图模型那么简单。
我的问题是,是否值得创建多个视图模型?如果有,什么时候?似乎它只会增加更多的困难,而我最终并没有看到它的优势。(是的,他们说它保持模块化......但我最终没有看到明显的优势)