我计划使用伟大的同位素插件来显示联系人列表,然后允许它们被过滤。我遇到的问题是它适用于小型数据集,但我不确定将其扩展到 1000 多条数据的最佳方法。
到目前为止,我的想法是:
- 加载一个随机子集,然后在单击过滤器时向其添加节点以填补空白
- 在用户滚动时加载更多节点
- 分页结果
- 在选择足够的过滤器以使数字低于预定义的阈值之前,不显示联系人。
我不确定这些是否能正常工作,我希望其他人也遇到过这种情况并能给我一些想法。
我计划使用伟大的同位素插件来显示联系人列表,然后允许它们被过滤。我遇到的问题是它适用于小型数据集,但我不确定将其扩展到 1000 多条数据的最佳方法。
到目前为止,我的想法是:
我不确定这些是否能正常工作,我希望其他人也遇到过这种情况并能给我一些想法。
您描述的情况很常见:如何让您的用户访问比他们一次可能详细看到的更多数据。
有几种方法可以回答问题,正确答案完全是主观的:这取决于您的用户试图查看或处理联系人的内容。在您真正获得令人满意的解决方案之前,您需要知道用户将使用联系人做什么。
只是猜测(但你会比我更清楚!),我希望他们正在做两件事:
如果您对所有解决方案进行过滤,那么 Lookup 目标就很容易实现。探索目标是您要设计的目标:
我想如果我站在你的立场上,我会介绍一些联系人聚类。我怀疑 1000 多个联系人是一个很大的性能问题(少说一百万!),所以 10000+ 确实是一个用户限制:他们不能一次查看 1000 个联系人。
我建议引入一些聚类,可能是通过姓氏或姓氏和名字。然后向用户展示一种钻入一个集群但折叠所有其他联系人的方法,这样他们就不会立即可见。手风琴/rollodex 范式中的一些东西。这会让您的用户产生他们正在与“所有联系人”一起工作的错觉。可能为每个集群引入一个最小数量,这样如果集群足够小,您就不必费心展示它(即,为什么要为 2 个或 3 个或 5 个联系人显示一个集群 - 只显示联系人)。随着过滤器的应用,这些簇会融化掉。
采用 Read Through Cache 的想法,例如:
装载区域可以很简单:
<html>
<body>
<!-- the page stuff -->
<div id="loader" style='display:none'>
<!-- all elements are loaded here -->
<div class="item">...</div>
</div>
</body>
</html>
这样你就可以在 DOM 中逐步加载所有元素,并且只显示需要的内容。
在添加和排列大量同位素项目时,我的性能很差,这是因为我是增量添加项目而不是批量添加项目。这应该是一个显而易见的选择,但我忽略了一些事情。
请务必使用数组或元素列表,而不是单独加载或删除。
incomingData=['<div>a</div>','<div>b</div>'];
elements=[];
jQuery.each(incomingData,function(ind,val){
var element = jQuery(val).get(0);
//$container.isotope('insert', element); //resource heavy
elements.push(element);
});
$container.isotope( 'insert', elements ); //less processing