我打算使用伟大的同位素插件来显示联系人列表,然后允许他们进行过滤。我遇到的问题是它适用于小型数据集,但我不确定为1000多个数据扩展它的最佳方法。
到目前为止,我的想法是:
我不确定这些是否会运作良好,我希望其他人能够面对这种情况并给我一些想法。
答案 0 :(得分:7)
您描述的情况非常常见:如何让您的用户访问超出他们可能一次详细查看的更多数据。
有几种方法可以回答这个问题,而正确答案是完全主观的:这取决于您的用户试图查看或处理联系人的方式。在您真正获得满意的解决方案之前,您需要知道用户将使用联系人的内容。
猜猜(但你会比我更清楚!),我希望他们有两件事要做:
如果您对所有解决方案进行过滤,那么Lookup目标就在其中。 Explore目标是您想要设计的目标:
我想如果我在你的鞋子里,我会介绍一些联系人的集群。我怀疑1000多个联系人是一个很大的性能问题(少说你说的是一百万!),所以10000+实际上是一个用户约束:他们不能一次查看1000个联系人。
我建议引入一些群集,可能是姓氏或姓氏和名字。然后向用户呈现钻入一个群集的方法,但折叠所有其他联系人,以便它们不会立即可见。 accordian/rollodex paradigm令人感动的东西。这会让您的用户觉得他们正在使用“所有联系人”。可能会为每个群集引入一个最小数量,这样如果群集足够小,您就不用费心去显示它(即,为什么要显示一个群集用于2个或3个或5个联系人 - 只显示联系人)。当应用过滤器时,簇就会消失。
答案 1 :(得分:1)
采用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中逐步加载所有元素,并且只显示所需的内容。
答案 2 :(得分:1)
我在追加和安排大量同位素物品时表现不佳,这是因为我是逐步添加物品而不是批量添加物品。它应该是一个明显的选择,但我忽略了一些东西。
请务必使用数组或元素列表,而不是单独加载或删除。
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