1

それで、私は私が出てきた問題のために適切な概念/解決策を作成する方法について尋ねています。私はそれをカバーしていると確信していますが、ここで何人かと話した後、猫の皮を剥ぐ方法は複数あり、より頻繁に-より良いことがわかります。笑。

だから、私はいくつかのデータを受け取っています..ajax呼び出しを介して。わかりました。それはすべて、ページページを作成すると思うバスケットにバンドルされます。

たとえば、4つのアイテムのバケットを取得し、ページ付けは1ページあたり2つです。2ページに相当します。1つのページ付けをクリックするだけでページを作成します。データはありますが、作成します。(以下の例のために)。

これが私の問題です。取得する必要のある2番目のデータセットがあり(これは個別のajax呼び出しです)、その2番目のデータセットは最初のアイテムセットに追加のデータを追加する可能性があります。

ディスプレイがまだ構築されていない場合でも、その2番目のセットを最初のセットにマップするのに最適な方法。

つまり、議論のために、受け取ったばかりの最初のデータセットがあります。1ページに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 }

]

1ページ目。


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

Page2ページ付けがクリックされます


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

さて、私の2番目の2番目のデータには次のものがあります

specialData = [{121212:特別セール:特別版}]

したがって、2番目のajax呼び出しは、すべてのFirst Bucket IDSを送信し、利用可能な「新しい」情報を返します。ある場合は、新しいデータをディスプレイに追加します。

さて、これを行うための私の推測は次のとおりです。

1)。2番目のリクエストが終了するのを待ってから、最初のバケットデータに2番目の情報セットを追加します。これにより、ページネーションを構築すると、ページネーションがリクエストされたときにデータが構築されます。

また

2)。通常どおりデータの最初のバケットを作成し、アイテムID番号と同じ*要素ID *を適用します。2番目のデータバケットがフェッチされると、新しい情報をhtml要素IDに追加します。 。それが私が適切な一致を見つける方法です。唯一のことは、新しい情報を追加する前に、その特定の要素ID domアイテムが存在する(現在のページ付けページに表示/構築されている)ことを知っている必要があります。

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

ここで何が欠けていますか?これは私が作っているよりも簡単ですか?

4

1 に答える 1

1

JavaScriptによって提供されるデータ構造のクリーンさと性質の両方について、おそらく2番目のアプローチを採用します。質問に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 に答える