我最近一直在尝试为Windows 8创建一个metro应用程序并尝试使用设置弹出窗口。
所以我跟着msdn quickstart: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(所以我可以确保它只执行一次)
以下是我的问题:按下按钮后,会出现“更改服务器”链接 。但是,当我点击它时,没有任何反应,侧窗也会淡出。
以下是我尝试过的事情,所以我知道这不是其中之一:
我正在弄清楚为什么它不起作用。
有人可以提供帮助吗(如果需要,我可以提供更多代码)?
谢谢。
答案 0 :(得分: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'}">
答案 1 :(得分:0)
在我的应用程序上,我在我的href中削减了斜线。所以像这样的东西:'/ setting.html'
同样在您的settings.html页面上,确保您拥有此data-win-control =“WinJS.UI.SettingsFlyout”
答案 2 :(得分: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);
}
并确保在settings.html文件中引用serv_changer
:
<div data-win-control="WinJS.UI.SettingsFlyout" data-win-options="{settingsCommandId:'serv_changer'}">