gpt4 book ai didi

javascript - 在 WinJS 应用程序中导航总是抛出异常

转载 作者:行者123 更新时间:2023-11-30 13:15:55 25 4
gpt4 key购买 nike

每次我尝试在页面的就绪函数中执行导航时,应用程序都会崩溃。

具体来说,它在下面的 WinJS.Navigation.navigate("/pages/login/login.html", {}); 行失败:

// This function is called whenever a user navigates to this page. It
// populates the page elements with the app's data.
ready: function (element, options) {

var listView = element.querySelector(".groupeditemslist").winControl;
listView.groupHeaderTemplate = element.querySelector(".headertemplate");
listView.itemTemplate = element.querySelector(".itemtemplate");
listView.oniteminvoked = this._itemInvoked.bind(this);

// Set up a keyboard shortcut (ctrl + alt + g) to navigate to the
// current group when not in snapped mode.
listView.addEventListener("keydown", function (e) {
if (appView.value !== appViewState.snapped && e.ctrlKey && e.keyCode === WinJS.Utilities.Key.g && e.altKey) {
var data = listView.itemDataSource.list.getAt(listView.currentItem.index);
this.navigateToGroup(data.group.key);
e.preventDefault();
e.stopImmediatePropagation();
}
}.bind(this), true);

this._initializeLayout(listView, appView.value);
listView.element.focus();

initialize();
}

function initialize() {
// Check if user is logged in
if (is_logged_in !== true) {
WinJS.Navigation.navigate("/pages/login/login.html", {});
}
else {
// TODO: Replace the data with your real data.
// You can add data from asynchronous sources whenever it becomes available.
generateSampleData().forEach(function (item) {
list.push(item);
});
}
}

有人知道为什么会这样吗?

最佳答案

这里有几条路线可供选择:

  1. 捕获未处理的异常并忽略它
  2. 构建代码以避免设置错误条件

要忽略错误,您可以设置一个 WinJS.Application.onerror 处理程序来处理未处理的异常。这是指导您解决此问题的论坛帖子:http://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/686188b3-852d-45d5-a376-13115dbc889d

一般来说,我会说你最好一起避免异常。为此 - 这里发生的是一次只能发生一个导航事件( promise )。当您在 ready 函数中时,用于导航到 groupedItems 的导航 promise 仍在运行。当您调用初始化时,它会调用 WinJS.Navigation.navigate("/pages/login/login.html", {});它看到这一点并尝试首先取消当前正在运行的导航 promise ,这会导致您看到的异常。

相反,您可以使用 window.setImmediate函数来设置对 initialize() 的调用在当前脚本 block 退出后运行。为此,请将对 initialize() 的调用替换为:

window.setImmediate(this.initialize.bind(this));

关于javascript - 在 WinJS 应用程序中导航总是抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12027274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com