我需要知道这是否正确。我刚刚开始使用WinJS开发应用程序。我已经确定问题的根源并摆脱它但我不知道这是否是正确的方法。请帮忙!
// Optimize the load of the application and while the splash screen is
// shown, execute high priority scheduled work.
ui.disableAnimations();
var p = ui.processAll().then(function () {
//return nav.navigate(nav.location || Application.navigator.home, nav.state);
return nav.navigate(nav.location || app.local, nav.state)
}).then(function () {
return sched.requestDrain(sched.Priority.aboveNormal + 1);
}).then(function () {
ui.enableAnimations();
});
问题出在第一个.then()
。注释行是默认行,我已经改变它以使应用程序正常工作。我完全不知道它是什么。请告诉我它意味着什么以及改变了什么。顺便说一下,“app
”是WinJS.Application
,而Application是navigator.js
中home
属性所在的WinJS名称空间。
答案 0 :(得分:0)
此错误表明navigator.js在执行此代码时尚未加载。 Application命名空间完全是任意的,与WinJS.Application无关,只在navigator.js中定义,所以如果没有加载该文件,那么命名空间就不会存在。
顺便说一下,WinJS命名空间只是JavaScript中模块模式的形式化,可以帮助您防止全局命名空间变得混乱。声明navigator.js这样的命名空间就可以了:
WinJS.Namespace.define("Application", {
PageControlNavigator: WinJS.Class.define(
只需在全局命名空间中创建一个名为" Application"的对象。然后为它定义成员。 (顺便说一句,你可以改变#34;应用程序"你想要的任何东西.navigator.js中的任何其他内容都不依赖于它,而navigator.js来自Visual Studio中的应用程序模板并且不是#39 ;部分WinJS本身。)
所以再一次,我的怀疑是你在default.html中没有(或者任何正确的路径),它的路径是不正确的,或者也许它是正确的在其他代码尝试执行后加载。尝试在WinJS.Namespace.define上设置断点,看看是否加载了该文件并且断点被击中。