2

私のHTML:

<div id="listViewBoxOffice" 
     data-win-control="WinJS.UI.ListView"  
     data-win-options="{ itemTemplate: select('#movieThumbnailTpl'), selectionMode: 'single' }">
</div>

私のJavascript:

WinJS.UI.Pages.define("/pages/home/home.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) {
        api.getBoxOffice().done(this.boxOffice, this.errBoxOffice);

        listViewBoxOffice.winControl.addEventListener('selectionchanging', this.selectionchanging);
        listViewBoxOffice.winControl.addEventListener('selectionchanged', this.selectionchanged);

    },
    boxOffice: function (movies) {
        var list = new WinJS.Binding.List(movies);
        listViewBoxOffice.winControl.itemDataSource = list.dataSource;
    },
    errBoxOffice: function (err) {
        debugger;
    },
    selectionchanged: function (evt) {
        console.log('changed');
    },
    selectionchanging: function (evt) {
        console.log('changing');
    }
});

私の問題:

イベントが発生するselectionchangedことはありません。イベントselectionchangingは発生しますが、 の値が正しくありませんnewSelection

4

3 に答える 3

3

ドキュメントはこれについて私が思うほど明確ではありませんが、項目が完全に選択されるようにtapBehaviorプロパティをに設定する必要があります。"toggleSelect"デフォルトでは、動作はinvokeOnlyであり、そのため、アイテムは完全には選択されません。クリックしますが、選択されていません。

MSDNドキュメントに適切な例があります。

インスタンスのコピーを保存するとlistViewBoxOffice、イベントから promise を介して現在のリストを取得できます。

listViewBoxOffice.selection.getItems().done(function(items) {
    // do something with the items...
});
于 2013-09-10T01:07:48.113 に答える
0

呼び出されたアイテムを使用してみてください。Winjs Listview を呼び出した Msdn リンク アイテムは次のとおりです。

それに応じて選択を変更してみてください。また、これが機能しない場合、または選択を変更したい場合は、設計したテンプレートに投稿してください. コード全体を確認する必要があります:)

于 2013-09-10T06:27:53.853 に答える