gpt4 book ai didi

scroll - 如何在 SproutCore ListView 中预加载项目?

转载 作者:行者123 更新时间:2023-12-03 13:38:28 26 4
gpt4 key购买 nike

我有一个相对较快的 SproutCore 应用程序,我正试图让它更快一点。

现在,当用户滚动我的 SC.ListView 并滚动查看一些尚未从服务器加载的列表项(例如从关系中加载)时,应用程序会自动调用服务器以加载这些记录。尽管这很快,但我的列表项仍有一小段时间是空白的。

我知道我可以让他们说“正在加载...”或类似的东西(我有),但我想知道:有没有办法预加载我的“屏幕外”记录,以便在用户滚动时,列表项已经加载?

我的 ListItemViews 将相当大(以像素为单位),因此从 AJAX 的角度来看,即使加载两倍的数据量也不会成为杀手,如果用户滚动时总是加载内容会很好(除非他们滚动 SUPER-SUPER-fast,在这种情况下,我可以让他们看到加载指示器)。

我目前通过将以下内容添加到我的 SC.ListView 找到了解决方案,但我注意到移动设备上的一些主要性能问题,它们与进行此更改直接相关,所以我想知道是否有更好的方法。

    contentIndexesInRect: function(rect) {

rect.height = rect.height * 2;

return sc_super();

}

最佳答案

覆盖 contentIndexesInRect 是我这样做的方式。不过,我不会将其翻倍——我可能会从 sc_super() 获得结果,然后将一些额外的项目添加到结果索引集中。 (我相信它会重新卡住,因此您可能必须克隆-编辑-卡住。)额外的一两个可能会给您足够的喘息空间来加载内容,而不会对明显的性能问题造成几乎同样的影响。

我很惊讶它会导致主要的性能问题。在我看来,您的列表项本身可能比它们需要的重量更重——例如,它们可能有很多绑定(bind)可以钩住和解开。如果这是正在发生的事情,您可能会从提高他们的效率中受益更多。

关于scroll - 如何在 SproutCore ListView 中预加载项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com