6

ここで愚かなことが欠けているように感じますが、リストビューでクリックイベントを聞くために推奨される方法は何ですか?

現時点で私は持っています:

WinJS.Utilities.query(".menuHolder").listen("click", linkClickHandler, false);

そして、私のリストビューテンプレートは、そのアイテムにクラス'menuHolder'を使用します。

            <div id="menuTemplate"
            data-win-control="WinJS.Binding.Template">
            <div class="menuHolder">
                <!-- menu img -->
                <img src="#" data-win-bind="src : pic; alt : title" />

                <div class="menuText">
                    <!-- menu text -->
                    <h1 data-win-bind="innerText : title"></h1>
                    <!-- menu desc -->
                    <h4 data-win-bind="innerText : description"></h4>
                </div>
            </div>
        </div>

リンクハンドラーでブレークポイントに到達したり、その関数を呼び出したりしていないようです。何かご意見は?

編集:

次の質問として(アイテム呼び出しイベントを念頭に置いて)、WinJS.Navigatorクラスを使用してアプリケーション内を移動したい場合、リストビューとアイテム呼び出しイベントの間でデータを渡すための推奨されるアプローチを知っている人はいますか?の一部をeventInfo適切なオブジェクトにキャストして情報を取得する必要があると思いますが、どの部分ですか?

4

2 に答える 2

6

「渡す」データが呼び出されたアイテムにバインドされているデータであると仮定すると、iteminvokedイベントに渡されるイベント引数でそれを行うことができます。私の1人はこのように見えます...

demosLV.oniteminvoked = function(e) {
    e.detail.itemPromise.then(function(item) {
        var location = format("/pages/{0}/{0}.html", item.data.key);
        WinJS.Navigation.navigate(location, item.data);
    });
};

したがって、demosLVはListViewです。oniteminvokedを関数に設定しています。その関数は、イベント引数として「e」を受け取ります。関数では、e.detail.itemPromiseにアクセスし、それから.thenをハングアップします。次に、item.dataを使用して.thenの実際のデータにアクセスします。それがあなたの意図したことだといいのですが。ところで、フォーマット関数は、なぜそれが機能しないのか疑問に思っている場合に備えて、私の1つです。

于 2012-09-30T01:36:12.397 に答える
4

私はソーセージだったようです。子レベルではなく、親のリストビューID参照で「iteminvoked」イベントをリッスンする必要がありました。

WinJS.Utilities.query("#menu").listen("iteminvoked", linkClickHandler, false);
于 2012-09-27T21:02:01.233 に答える