3

我最近一直在尝试为 Windows 8 创建 Metro 应用程序并尝试使用设置弹出窗口。

所以我跟着msdn快速入门:http: //msdn.microsoft.com/en-us/library/windows/apps/hh780611.aspx

但是,我无法让它工作。

这是我添加设置弹出​​窗口的部分:

function setupSettings() {
    app.onsettings = function (e) {
        e.detail.applicationcommands = { 'serv_changer': { title: 'Change Server', href: 'settings.html' } };
        WinJS.UI.SettingsFlyout.populateSettings(e);
    }
}

当我按下一个按钮时,函数 setupSettings 只被调用一次(所以我可以确保它只被执行一次)

这是我的问题:按下按钮后,出现“更改服务器”链接。但是,当我单击它时,什么也没有发生,侧窗只是淡出。

这是我尝试过的事情,所以我知道它不是其中之一:

  • 不是文件丢失。我试图放置一个不存在的不同文件,并引发异常并且程序崩溃。在这里,它不会崩溃。
  • HTML 已正确编码,因为我尝试将 settings.html 替换为 Microsoft 的示例设置文件之一。

我很难弄清楚为什么它不起作用。

有人可以帮忙吗(如果需要,我可以提供更多代码)?

谢谢你。

4

3 回答 3

2

在您的 settings.html 页面中,确保 data-win-control 声明包括设置 commandId 的名称 - 这似乎从在线示例中丢失。

例如。

如果您的 js 文件将命令声明为:

e.detail.applicationcommands = { 'serv_changer': { title: 'Change Server', href: 'settings.html' } };

...然后确保您的 settings.html 文件引用“serv_changer”:

<div data-win-control="WinJS.UI.SettingsFlyout" data-win-options="{settingsCommandId:'serv_changer', width:'wide'}">
于 2012-11-20T20:29:35.067 回答
0

在我的应用程序上,我的 href 中有斜杠。所以像这样的href:'/settings.html'

同样在你的 settings.html 页面上,确保你有这个 data-win-control="WinJS.UI.SettingsFlyout"

于 2012-09-29T20:18:02.393 回答
0

替换你的js函数

function setupSettings() {
    app.onsettings = function (e) {
        e.detail.applicationcommands = { 'serv_changer': { title: 'Change Server', href: 'settings.html' } };
        WinJS.UI.SettingsFlyout.populateSettings(e);
    }
}

有了这个:

function setupSettings(e) {
        e.detail.applicationcommands =
        {
            "serv_changer":
            {
                title: "Change Server",
                href: "/settings.html"
            }
        };
        WinJS.UI.SettingsFlyout.populateSettings(e);
    }

并确保serv_changer在您的 settings.html 文件中被引用:

<div data-win-control="WinJS.UI.SettingsFlyout" data-win-options="{settingsCommandId:'serv_changer'}">
于 2013-09-17T21:04:36.333 回答