我正在开发一个Windows 8 html / java-script metro应用程序。 当用户首次启动应用程序时,将显示带有文本框的欢迎页面,用户可以在其中输入他/她的用户名。当用户按下按钮时,将保存用户名并进行重定向。这段代码工作得很好......
var appData = Windows.Storage.ApplicationData.current;
button.onclick = function (e) {
var input = document.querySelector(".welcome #userName").value;
if(input != null && input != "") {
appData.roamingSettings.values["userName"] = input;
WinJS.Navigation.navigate("/pages/items/items.html");
}
}
用户第二次进入应用程序时,我想要从开始页面到内容页面的重定向,而不需要用户的任何操作...所以我看一下漫游设置,如果它包含键“userName”,我尝试进行与按钮onclick功能相同的WinJS调用。
if (appData.roamingSettings.values.hasKey("userName")) {
WinJS.Navigation.navigate("/pages/items/items.html");
}
问题是,这一次,没有重定向发生,应用程序失败..(漫游设置包含正确的信息,因此重定向就是问题)。代码放在就绪函数内。
WinJS.UI.Pages.define("/pages/welcome/welcome.html", {
ready: function (element, options) {
})();
所以我的问题是,使用WinJS.Navigation将条件重定向从一个页面预制到另一个页面的正确方法是什么?我的代码是什么问题?
答案 0 :(得分:0)
在default.js中进行导航(由@Gotdibbs建议)应该可行。激活处理程序中的代码应该看起来像这样的函数结束。
args.setPromise(WinJS.UI.processAll().then(function () {
// if app was suspended while on a page, go there
// else ...
if (nav.location) {
nav.history.current.initialPlaceholder = true;
return nav.navigate(nav.location, nav.state);
}
else if (appData.roamingSettings.values.hasKey("userName")) {
WinJS.Navigation.navigate("/pages/items/items.html");
}
else {
return nav.navigate(Application.navigator.home);
}
}));