Javascript小部件受iPhone UITableView的启发?

时间:2010-07-15 18:05:28

标签: javascript iphone

Cocoa Touch的UITableView允许用户滚动浏览大量具有良好性能的数据行,因为它会回收表行。不是为每个单独的数据行创建GUI元素,而是创建有限数量的表行,并在用户滚动时使用相关数据进行更新,从而产生在大量表行中上下导航的错觉。 / p>

有没有人在javascript中看到过这个?是否有可以在我这里使用的插件?

5 个答案:

答案 0 :(得分:5)

infinity.js效果很好。它将在幕后动态加载“页面”,为您提供列表已完全加载的外观。

更多信息可以在他们的Github页面上找到 - https://github.com/airbnb/infinity

此外,我已经将项目分叉更新,以便与Zepto合作。我还将它设置为使用任何可滚动的div(设置为overflow:scoll)和类'scrollable' - https://github.com/elliotcw/infinity

我应该补充一点,我做了这些更改,因为这对于移动设备上的大型列表非常有用,当您需要在页面上使用许多复杂元素时,这些列表会变慢。

答案 1 :(得分:3)

我也在寻找这个,而infinityjs [1]似乎并没有像UITableView那样模仿相同的界面。对于我的场景来说,infinityjs要求包含列表项的元素已经添加到DOM中,这是一个问题。

MegaList [2]最接近我想要的。安德鲁(作者)在移动设计方面做得非常出色,有触摸支持等。有一点需要注意的是,它似乎假设了一个严格的选择列表模型并且比我想要的列表组件做得更多一点要做(例如绑定到调整大小事件并尝试自动处理)。

所以我开始编写一个准系统列表组件,也是在iOS UITableView之后建模的。这是一项正在进行的工作,我正在投入我需要的东西。来源在这里https://github.com/shyam-habarakada/js-virtual-list-view。我正在投入我需要的东西,并且需要贡献者: - )

[1] http://airbnb.github.io/infinity/

[3] https://github.com/triceam/MegaList

答案 2 :(得分:0)

实际上算法并不困难。如果你知道javascript,你应该能够写这个。该算法只需要一个单元格的高度和表格的高度。

我只知道这两个: Apple的Dashcode javascript Framework有一个Table的实现。你可以看看你是否需要它。 或者Cappuccino Framework基本上是Objective-J但是在幕后是Javascript。

答案 3 :(得分:0)

我不认为这在JS中是必要的。

在Obj-C中这样做是为了不分配和启动表行中的视图。

在JS中,行只是文本(不需要分配),你应该把它放在某个地方 - 你可能只保留没有HTML的文本,当行变得可见时用HTML包装它,但我不认为它是值得你花时间。

我不相信这种方法会让HTML表更快......

答案 4 :(得分:0)

Clusterize.js正是如此。

它很小,适用于任何标签(表格,列表,div)