3

最近、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 は、ボタンを押したときに 1 回だけ呼び出されます (そのため、一度だけ実行されることを確認できます)。

これが私の問題です。ボタンを押した後、「サーバーの変更」リンク表示されます。ただし、クリックしても何も起こらず、サイド ウィンドウがフェードアウトします。

ここに私が試したことがあるので、これらのいずれでもないことを知っています:

  • ファイルの欠落ではありません。存在しない別のファイルを配置しようとすると、例外がスローされ、プログラムがクラッシュしました。ここでは、クラッシュしません。
  • settings.html を Microsoft のサンプル設定ファイルの 1 つに置き換えようとしたため、HTML は適切にコーディングされています。

なぜ動かないのか分からず困っています。

誰か助けてもらえますか (必要に応じてさらにコードを提供できます)。

ありがとうございました。

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

あなたの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'}">
于 2013-09-17T21:04:36.333 に答える