我最近一直在试图建立一个Metro应用的Windows 8,并试图使用设置弹出。
所以我也跟着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。
我有麻烦弄清楚为什么它不工作。
可能有人帮助(如果需要的话我可以提供更多的代码)?
谢谢。
在你settings.html页,确保数据双赢的控制声明包括设置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'}">
我的应用程序,我在我的HREF斜线斜线。 所以像这样的href:“/settings.html”
此外,您的settings.html页面上确保你有这个数据双赢的控制=“WinJS.UI.SettingsFlyout”
更换你的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'}">