0

SettingsFlyout を実装しました。このフライアウトのビューから、私のアプリはユーザー (firsname) からいくつかの情報を収集し、それをローミング設定に保存したいと考えています。この情報は、ユーザーが設定ビューのボタンをクリックすると保存され、フライアウトの beforeShow イベントで取得されます。これら 2 つのイベントは、SettingsFlyout 自体の ready 関数でセットアップされますが、何らかの理由で次のエラーが発生します。

0x800a138f - JavaScript ランタイム エラー: 未定義または null 参照のプロパティ 'winControl' を取得できません

次の行で

var divtest = document.getElementById"test").winControl;

同様に私も得る

0x800a138f - JavaScript ランタイム エラー: 未定義または null 参照のプロパティ 'onclick' を設定できません。

これらの問題を引き起こしている私が間違っていることはありますか?

これが私がdefault.htmlに持っているものです

app.onsettings = function (e) {

        e.detail.applicationcommands = {
            "test": {
                href: "/pages/settings/test/test.html",
                title: "Test"
            }
        }

        WinJS.UI.SettingsFlyout.populateSettings(e);
    };

これが test.html そのものです。

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <link href="/pages/settings/test/test.css" rel="stylesheet" />

    <script src="/pages/settings/test/test.js"></script>

    </head>
    <body>
        <div 
            data-win-control="WinJS.UI.SettingsFlyout"  data-win-options="{settingsCommandId:'test',  width:'narrow'}">
            <div class="win-header">       
                <div class="win-label">test</div>
            </div>
            <div class="win-content">
                First Name: <input id="firstname" />
                <br />
                <input type="submit" value="Save" />
            </div>
        </div>  
    </body>
</html>

これが test.js ファイルです。

(function () {
    "use strict";

    WinJS.UI.Pages.define("/pages/settings/test/test.html", {
        // This function is called whenever a user navigates to this page. It
        // populates the page elements with the app's data.
        ready: function (element, options) {
            // TODO: Initialize the page here.
            var roamingSettings = Windows.Storage.ApplicationData.current.roamingSettings;
            var divtest = document.getElementById("test").winControl;
            var firstname = document.getElementById("firstname");

            document.getElementById("submit").onclick = function (e) {
                //alert('hi');
                roamingSettings.values["firstname"] = firstname.value;
            }

            divtest.addEventListener("beforeshow", function () {
                firstname.value = roamingSettings.values["firstname"];
            });
        },

        unload: function () {
            // TODO: Respond to navigations away from this page.
        },

        updateLayout: function (element, viewState, lastViewState) {
            /// <param name="element" domElement="true" />

            // TODO: Respond to changes in viewState.
        }
    });
})();
4

2 に答える 2

1

submitIDまたはtestを持つ要素はありませんHTML

于 2013-06-28T17:24:21.800 に答える
1

問題の原因として次のことが考えられます。

var divtest = document.getElementById("test").winControl;

でHTML要素を探しId=testます、設定したようです

settingsCommandId:'test'

しかし、それは同じではないので、次のようにする必要があります:

<div id="test" data-win-control="WinJS.UI.SettingsFlyout"  data-win-options="{settingsCommandId:'test',  width:'narrow'}">
于 2013-06-28T17:51:50.357 に答える