在多个文件中拆分Win8应用程序HTML的最佳实践

时间:2012-12-27 19:38:17

标签: windows-8 microsoft-metro winjs

我似乎无法找到一个很好的解决方案来拆分单页Windows 8应用程序,就像过去使用SHTML一样,或者包含(“test.html”);用PHP。

我在default.html中有所有HTML标记。但是我想将一些部分移动到自己的文件中。例如,将标头从default.html移至header.html:

// default.html
<div data-win-control="WinJS.UI.HtmlControl" data-win-options="{uri: 'html/header.html'}"></div>

// html/header.html
<header>
   <h1>App Name</h1>
   <h2><span data-win-res="{textContent: 'subtitle'}"></span></h2>
</header>

请注意,textContent由WinJS.Resources.processAll();翻译副标题。问题是转换未完成,因为在运行时期间包含了header.html。

总而言之,我要找的是:

a)编译时包括方法

或b)在我运行之前预先加载一堆html文件的方法(比如假的编译包括)

WinJS.UI.processAll()
WinJS.Resources.processAll();

2 个答案:

答案 0 :(得分:2)

正如迈克尔所说,网格是这样做的,但导航模板也是如此,看起来和理解起来要清晰得多。 你正在寻找使用HtmlControl,但你可以使用另一个控件,它是PageControl(WinJS.UI.Pages.PageControl)。您正在使用的HtmlControl是一个控件,它与所有其他控件和绑定一起处理,因此它听起来像是在处理数据win-res之前执行html。 我会尝试:

  1. 仅在您的HtmlControl div上手动调用processAll。 processAll方法可以使用根元素,即使它在default.js中调用,也可以在发生之前自己调用它。

  2. 切换到使用PageControl,您可以手动调用其渲染方法。

  3. 希望这两种解决方案中的一种适合您。

答案 1 :(得分:0)

默认网格应用模板执行此操作,其中default.html具有框架,并且所有子页面都放入该框架中。