【问题标题】:Listview loaded twiceListview 加载了两次
【发布时间】:2014-07-23 09:41:50
【问题描述】:

导航返回后,我需要在列表视图中设置用户的滚动位置。 该列表位于数据透视项目内。为了检测滚动位置,我使用 .win-pivot-item-content

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

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

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

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

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

编辑:我基于app模板开始了一个新项目,列表视图的滚动位置也等于0。这是一个bug吗?

【问题讨论】:

  • 检查this是否有帮助

标签: listview winjs windows-phone-8.1


【解决方案1】:

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

如果你想在列表完全加载时做一些事情,你必须检查加载状态:

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 解释了列表视图的不同加载状态。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2022-12-24
    • 2012-06-01
    • 2014-11-24
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多