0

我正在使用 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: {} };

有人可以解释为什么会发生这种情况以及我已经定义了什么,或者我应该在哪里定义它?

4

2 回答 2

1

确保你包括

<script src="/js/navigator.js"></script>

在 default.html 上

于 2013-06-24T18:47:23.373 回答
-1

看来这是一个仅在您使用将内置“搜索合同”添加到空白项目时才会发生的问题。如果您将搜索合同与其他类型的项目模板一起添加,它显然可以工作。

我在空白模板中修复它的解决方案是删除Application.,只留下Navigator.home. 我不得不承认我并不完全理解它为什么会起作用,但是一旦我这样做了,我就能够再次编译我的项目。

如果有人可以更新它并解释为什么它会起作用,我相信随着 Win 8 开发的兴起,它可能对其他开发人员有所帮助。

于 2012-11-27T09:44:33.913 回答