演示:ttp://code.msdn.microsoft.com/windowsapps/splash-screen-sample-89c1dc78/view/sourcececode
如何更改data-win-control =" winjs.ui.htmlcontrol"到data-win-control =" application.pagecontrolnavigator"?
所以,我知道这有点晚了,但是这是我面对同一问题时在应用程序中所做的。
首先有点背景:
导航模板的工作方式,它依赖于default.html页面中定义的pagecontrolnavigator控件。
由于控件将在应用程序加载并删除应用程序后定义"主页"页面,它将导航到主页或最后一个URL,或者在default.js文件中遵循此代码的最后一个URL:
args.setPromise(WinJS.UI.processAll().then(function () {
if (nav.location) {
nav.history.current.initialPlaceholder = true;
return nav.navigate(nav.location, nav.state);
} else {
return nav.navigate(Application.navigator.home);
}
}));
Windows Store应用程序的合同要求该应用程序在5秒钟中加载(或在5秒内显示内容),因此,启动屏幕不会等到您不同步地加载所有数据或您等待的任何数据在显示主页之前,加载o,o您必须扩展飞溅屏幕以使应用程序有时间加载所需的所有内容。
所以,我这样做的方式,我不知道这是正确的方法,但对我有用,是为了检查数据是否已加载,请等待,如果没有加载,请等待,一旦加载了我m删除飞溅屏幕并导航到主屏幕。
function countDown() {
if (Data.isReady > 0) {
ExtendedSplash.remove();
return nav.navigate("/pages/home/home.html");
}
else {
setTimeout(countDown, 5000);
}
}
,在您从模板中获得的承诺,我将其更改为:
// Use setPromise to indicate to the system that the splash screen must not be torn down
// until after processAll and navigate complete asynchronously.
args.setPromise(WinJS.UI.processAll().then(function () {
if (nav.location) {
nav.history.current.initialPlaceholder = true;
return nav.navigate(nav.location, nav.state);
}
}));
这样,当应用程序加载时,它没有位置可转到,并且倒数功能一旦加载数据,就可以将其重定向到主页。
再次,如果它是"正确"的解决方案,我现在不现在,但是您不会失去单页导航控制,并且一切都像魅力一样工作。
希望它有帮助。