3

ボタンを含む ListView 内の項目のリストがあります。ボタンにイベントリスナーを追加する方法が見つかりません...


これはコードです:

JS:

downloadsListView = document.getElementById('downloads').winControl
downloadsListView.itemDataSource = JobList.dataSource
downloadsListView.onloadingstatechanged = function() {
      var _this = this;
      return WinJS.Utilities.query("button.play_pause_button", document.getElementById('downloads')).forEach(function(element) {
        console.log(element);
        return element.onclick = _this._play_pause_download;
      });
    };

関数がコンソール出力を介してボタンをループすることを保証できます。しかし、ボタンをクリックしても何も起動しません。

誰かが助けてくれることを願っています。ありがとう :)

4

2 に答える 2

3

ドミニクのコメントが最善の策だと思います。MSDNのListView.itemTemplateプロパティページには...

アイテムテンプレートへのインタラクティブ要素の追加アイテムテンプレートには、他のほとんどのコントロールを含めることができますが、FlipViewまたは別のListViewを含めることはできません。

通常、ユーザーが要素を操作すると、ListViewはその操作をキャプチャし、それを使用して、ユーザーがアイテムを選択または呼び出したか、アイテムをパンしているかどうかを判断します。コントロールなどのインタラクティブ要素が入力を受け取るには、win-interactiveクラスをインタラクティブ要素またはその親要素の1つにアタッチする必要があります。その要素とその子はインタラクションを受け取り、ListViewのイベントをトリガーしなくなります。

win-interactiveをアイテムテンプレートの要素にアタッチするときは、要素がアイテム全体を埋めないようにしてください。そうしないと、ユーザーはそのアイテムを選択または呼び出すことができなくなります。

アイテムテンプレートにインタラクティブな要素を追加するには、WinJS.Binding.Templateの代わりにテンプレート関数を使用する必要があります。

于 2012-12-12T16:32:09.673 に答える
2

ユーザーが要素をタップ/クリックしたときに発生するイベントリスナーを ListViewItem に追加しないのはなぜですか? これが正しいやり方です。

ListView には onItemInvoked があります。詳細については、こちらを参照してください。

あなたの場合の例:

 <div id="downloads" data-win-control="WinJS.UI.ListView" 
data-win-options="{oniteminvoked : _play_pause_download}">
</div>
于 2012-12-09T14:54:22.880 に答える