1

所以,我在问如何为我遇到的问题创建适当的概念/解决方案。我很确定我会掩饰它,但是在与这里的一些人交谈之后,我发现有不止一种方法可以给猫剥皮,而且更常见的是 - 更好。哈哈。

所以,我有一些数据进来......通过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 调用将发送我所有的 First Bucket IDS 并返回任何可用的“新”信息。如果有,我将在显示中附加新数据。

现在,我的猜测是:

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

或者

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

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

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

4

1 回答 1

1

对于 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] 标志。

于 2012-10-20T00:18:16.040 回答