2

我正在尝试为我正在开发的 ASP.NET MVC 4 应用程序设置 MVVM。最近,我遇到了来自 John Papa 的出色演示/代码示例(可以在此处查看http://www.johnpapa.net/recent-presentation-on-spa-basics/)。

他谈到拥有 jquery/knockout.js/breeze.js 软件堆栈,但仅限于单页应用程序 (SPA) 的上下文中。

查看代码 - 我看到 bootstrapper.js 巧妙地为所有视图设置了绑定。

ko.applyBindings(vm.sessions, $(app.viewIds.sessions).get(0));
ko.applyBindings(vm.speakers, $(app.viewIds.speakers).get(0));
ko.applyBindings(vm.session, $(app.viewIds.session).get(0));

如果我有更多的 cshtml 文件,在更复杂的应用程序中拆分视图,我如何优雅地处理导航发生时的引导绑定?

4

2 回答 2

4

您可以使用几个选项(在我的脑海中)链接到 html 的其他视图:1)@Html.Partial 2)敲除外部模板插件 3)自定义 AJAX 去获取视图的 HTML 4)模板引擎您选择抓住它 5) RequireJS 及其文本插件 6) 将它们全部加载到 1 页中(对于任何大小的东西都很讨厌)

如果你已经有淘汰赛,。您可能想要使用 Knockout 外部模板插件。它非常适合引入远程 HTML。如果你已经有了 require.js,那么文本插件也很不错。

于 2013-01-11T00:09:55.360 回答
1

您仍然可以将其作为 SPA,但将所有“页面”分成单独的 cshtml 文件,然后使用 Html.Partial 将它们加载到 index.cshtml 中:

 @Html.Partial("_Substation")
 @Html.Partial("_Location")
 @Html.Partial("_Weather")
 @Html.Partial("_RealTimeValues")
 @Html.Partial("_EventView")

所有这些字符串都是我单独的 cshtml 文件的名称,但它仍然是一个 SPA。

除非有其他原因您不想拥有 SPA?

于 2013-01-10T15:58:08.827 回答