从另一个页面导航回来时,onloadingstatechanged不会触发

时间:2014-12-19 11:07:28

标签: javascript windows-8 windows-8.1 winjs

我的winjs应用程序中有一个页面,在ready函数中,我为页面中列表视图的onloadingstatechanged事件分配了一个函数。然后我像往常一样检查那是什么时候强制等等。

        var buttonsListView = document.querySelector(".buttons-container .itemslist").winControl;

        buttonsListView.onloadingstatechanged = function (args) {
            if (args.srcElement === buttonsListView.element && buttonsListView.loadingState === "complete") {

                //MY CODE HERE

                buttonsListView.onloadingstatechanged = null;
            }
        }.bind(this);

这是HTML:

            <div class="buttons-container">
                <div class="buttonTemplate" data-win-control="WinJS.Binding.Template">
                    <button data-win-control="WinJS.UI.AppBarCommand" data-win-options="{icon:'', type:'button'}" data-win-bind="winControl.label: buttonName; winControl.icon: icon"></button>
                </div>
                <div class="itemslist win-selectionstylefilled" data-win-control="WinJS.UI.ListView" data-win-options="{
                        layout: {type: WinJS.UI.GridLayout},
                        selectionMode: 'none',
                        itemTemplate: select('.buttons-container .buttonTemplate'),
                        itemDataSource: null,
                        oniteminvoked: RapportPage.buttonNavigate
                    }">
                </div>
            </div>

我的问题是,如果我导航到另一个页面,然后按后退按钮,就会触发就绪事件,但onloadingstatechanged永远不会发生。

1 个答案:

答案 0 :(得分:0)

我发现了问题。

按类.itemslist引用listview它不起作用。当您从另一个页面返回而不是直接导航到页面时,列表视图中的某些内容会有所不同。

所以我只是为ListView div分配了一个ID,然后加载像这样的dom对象:

var buttonsListView = document.querySelector("#buttonList").winControl;