我正在通过Windows 8搜索合同功能,特别是将搜索合同添加到项目时创建的默认searchResults.js文件。当我的应用程序处于暂停或终止状态(即不是主窗口)时,我会尝试搜索我的问题。
此代码如下:
// Handles when a users performs a search and the app is not already the main app
WinJS.Application.addEventListener("activated", function (args) {
//If activation kind is search...
if (args.detail.kind === appModel.Activation.ActivationKind.search) {
args.setPromise(ui.processAll().then(function () {
// If there is no current navigation location
if (!nav.location) {
// Declare object
nav.history.current = { location: Application.navigator.home, initialState: {} };
}
// Else navigate to searchPageURI,
return nav.navigate(searchPageURI, { queryText: args.detail.queryText });
}));
}
});
我自己添加了评论以尝试细分代码。现在我理解了这个前提,这段代码会检查应用程序是如何激活的,并根据它们是否是现有导航位置运行两个不同的进程。但是,当我运行应用程序并从外部搜索时,我收到的错误是:JavaScript runtime error: 'Application' is undefined
。它指的是:
nav.history.current = { location: Application.navigator.home, initialState: {} };
有人可以解释为什么会发生这种情况,我已经定义了什么,或者我应该在哪里定义它?
答案 0 :(得分:1)
确保包含
<script src="/js/navigator.js"></script>
答案 1 :(得分:-1)
这似乎是一个问题,只有在您使用内置的“搜索合同”添加空白项目时才会发生。如果您将搜索合同与其他类型的项目模板一起添加,那么它显然有效。
我在空白模板中修复它的解决方案是删除Application.
,只留下Navigator.home
。我不得不承认我并不完全理解为什么这样可行,但是一旦我完成了这个,我就能够再次编译我的项目。
如果有人可以通过对其原因进行解释来更新此内容,我确信在Win 8开发过程中,其他开发人员将来可能会有所帮助。