Durandal - 打开具有相同视图和视图模型的多个选项卡

时间:2013-07-12 09:53:48

标签: knockout.js durandal hottowel

我们有一个主菜单项,比如WorkFlow。每当您单击它时,它都会打开一个选项卡,在该选项卡下加载工作流的UI。请注意,此选项卡不是浏览器选项卡,而是应用程序UI中的选项卡。工作流有四个屏幕,由他们自己的视图和视图模型驱动。用户可以通过填写数据,进行选择等以及在工作流程屏幕之间来回移动来执行该工作流程。

要求是当用户反复点击WorkFlow菜单项时,应打开多个选项卡,每个选项卡都包含工作流程屏幕,可以独立于其他选项卡中打开的相同工作流程执行。例如,在第一个选项卡中,您可以移动到工作流程中的屏幕2,而在第二个选项卡中,您可以移动到第四个屏幕,然后如果您在这些选项卡之间切换,每个工作流程都会维护它的状态和数据,如kayak.com的工作原理。问题的关键在于我们并不真的希望在我们在选项卡中打开的同一视图的多个实例之间共享视图模型。如何使用Durandal / KnockOut实现这一目标?

谢谢,

李苏滨

1 个答案:

答案 0 :(得分:0)

所以从本质上讲,你试图将相同Viewmodel的多个实例显示在一起? 如何更改,以便Durandal仅显示BASE-Workflow ViewModel,但是那个内部使用模板呈现X次?

要捕获TabItem上的单击,而不是创建MapNav使用MapRouter,并将可见性设置为false,那么在Shell中,或者在显示Item的任何位置创建带有Click数据绑定的自定义条目。在那里,您可以将一些特定代码发送到您的BaseWorkmodel,以便它能够创建另一个模板。

我对Durandal也很陌生,但这就是我如何尝试绕过这个问题

希望这有帮助