因此,我要问的是如何为即将出现的问题创建适当的概念/解决方案。我很确定可以掩盖它,但是在这里与一些人交谈之后,我发现有一种以上的方法可以给猫剥皮,而且更常见的是-更好。大声笑。

因此,我有一些数据通过ajax调用进入。好的太棒了。所有这些都捆绑在一个篮子里,我认为这可以创建页面分页。

例如,我得到4个项目的存储桶,我的分页为每页2个。等于2页。我只建立一个页面,单击一个分页即可。我有数据,但随后将其建立了出来。 (为了下面的示例)。

所以这是我的问题。我有第二组数据必须检索(这是一个单独的ajax调用),第二组数据可能会将其他数据附加到第一组项目中。

即使尚未建立其显示,如何最好地将第二组映射到第一组。

所以,-为了争辩,我有我刚收到的第一组数据。可以说每页只有2个项目。

总的来说,我的第一个存储桶包含以下数据:

data = [
{name:ITEM1, desc: Greatest Book in History, id: 98987 },
{name:ITEM2, desc: Second Greatest Book in History, id: 76557 },
{name:ITEM3, desc: Third Greatest Book in History, id: 121212 },
{name:ITEM4, desc: Fourth Greatest Book in History, id: 09546 }


]

第一页。



ITEM 1 - Greatest Book in history
ITEM 2 - Second Greatest Book in history




单击第2页分页



ITEM 3 - Third Book in history (**special sale: Special Edition**)
ITEM 4 - Fourth Greatest Book in history


现在,我的第二个数据如下

specialData = [
   {121212:特惠:特惠版}
]

因此,第二个ajax调用将发送我所有的第一个Bucket IDS并返回任何可用的“新”信息。如果有的话,我将在显示器上附加新数据。

现在,我的猜测是:

1)。等待第二个请求完成,然后将第二个信息集附加到第一个存储桶数据中,因此当我构建分页时,将在请求分页时构建数据。

要么

2)。像往常一样构建第一个数据桶,然后应用与项目ID号相同的*元素ID *。当获取第二个数据桶时,我将新信息附加到html元素ID上。这就是我找到合适的比赛的方式。唯一的事情是,我必须知道存在特定元素ID dom项目(在当前分页中可见/内置),然后才能附加新信息。

<div>ITEM 3 - Third Book in history<span id="121212"></span></div>


我在这里想念什么?这比我做的简单吗?

最佳答案

对于JavaScript所提供的数据结构的简洁性和本质,我可能会选择第二种方法。鉴于您已经用jQuery标记了问题,这是一个实现。

    var dataBucket = {};
    function enrichBucket(incomingData) {
        for(var i = 0, len = incomingData.length; i < len; i++) {
            var dataEntry = incomingData[i];
            dataBucket[dataEntry.id] = $.extend( dataBucket[dataEntry.id]||{}, dataEntry);
        }
    }


http://api.jquery.com/jQuery.extend/如果要进行深度合并,请签出[deep]标志。

关于javascript - 将分页的数据分配给分页的数据,最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12983897/

10-12 06:59