0

私は最初のWindows8アプリケーションを書いていますが、すでに行き詰まっています。

私がやりたいのは、リストビューでクリックされたインデックスに応じて、html/winjs要素を表示することです。私が書いた現在のコードはある程度機能します。最初の要素(albumListView)が表示されますが、その後は他のアイテムは表示されません。WinJSのドキュメントを読みましたが、何が間違っているのか理解できません。

私は何が間違っているのですか?そして、私が達成しようとしていることを行うためのより簡単な方法はありますか?

これが私が書いたコードです:

私のhtml:

<div id="albumListView" class="hidden" data-win-control="WinJS.UI.ListView" data-win-options="{itemTemplate:select('#albumTemplate'), layout:{type:WinJS.UI.GridLayout}, selectionMode:'none'}"></div>
<div id="songsListView" class="hidden" data-win-control="WinJS.UI.ListView" data-win-options="{itemTemplate:select('#songsTemplate'), layout:{type:WinJS.UI.ListLayout}}"></div>

私のCSS:

.hidden {
    display:none;
}

私のJS:

function hidePanelViewItems() { //hide all panel items

    var items = [albumListView, songsListView];

    for (var i = 0; i < items.length; i++) {
        WinJS.Utilities.addClass(items[i], "hidden");
    }

    return true;
}

function showItem(item) { //show a single item in the panel
    hidePanelViewItems();
    WinJS.Utilities.toggleClass(item, "hidden");

    return true;
}

args.setPromise(WinJS.UI.processAll().done(function () {
    //hide all panel listviews
    hidePanelViewItems();
    //show the album view as a default
    showItem(albumListView);

    //deal with menu item clicks
    menuListView.addEventListener("iteminvoked", function (eventInfo) {
        switch (eventInfo.detail.itemIndex)
        {
            case 0:
                showItem(albumListView);
                break;
            case 1:
                showItem(songsListView);
                break;
        }
    });
}))

返信をよろしくお願いします:)

4

2 に答える 2

0

解決しました!このコードを何時間もいじった後、最初から問題ないことがわかりました。問題は、リストビューが隠されているため、データが実際にはリストビューにバインドされていないことでした!

于 2013-01-03T19:24:04.303 に答える