列表视图加载了两次

时间:2014-07-23 09:41:51

标签: listview winjs windows-phone-8.1

我需要在导航回后在列表视图中设置用户的滚动位置。 该列表位于枢轴项内。要检测滚动位置,请使用 .win-pivot-item-content

的滚动
document.querySelector(".win-pivot-item-content").onscroll = function () {
    WinJS.Application.sessionState.scrollPosition = this.scrollTop;
};

我使用win-pivot-item-content的滚动位置,因为我的listview的滚动位置总是等于0 ......

这是一个技巧..但它正在发挥作用。仅当win-pivot-item的大小小于15 000 px(+150项)时(为什么?!) 因为之后我的列表加载了2次。

listView.winControl.onloadingstatechanged = function () {
    // fired twice .. 
};

如何强制列表加载内容一次?

编辑:我基于应用程序模板启动了一个新项目,列表视图的滚动位置也等于0.这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

您的列表未加载两次,加载列表时会多次触发此事件。

如果要在列表完全加载时执行某些操作,则必须检查加载状态:

listView.winControl.onloadingstatechanged = function (args) {
    if (ev.detail.loadingState === "complete") {
        // The code here will be called only when the list is fully loaded
    }
};

This article解释了listview的不同加载状态。

请注意,我的示例显示了如何等待加载结束,但是在滚动的情况下,我认为可以在加载列表期间更早完成(等待结束时可能会导致视觉故障滚动)