1

JSON に一連のコメントがあります。この JSON はブラウザーに読み込まれます。最新のコメントを先頭にして、コメントをスレッド化されたコメント階層として表示したいと考えています。適切なアルゴリズムを見つけるために、多くの検索を行いました。確かにこれは解決された問題ですが、私はそれを見つけることができません。

JSON フィールドについて説明するには:

  • createdtime = epochseconds (コメントが作成された時間)
  • documentid = このコメントのドキュメント ID
  • parentdocumentid = このコメントが返信するコメントのドキュメント ID
  • topleveldocumentid = コメントが属するブログ投稿の documentid

問題は、これらのコメントを Javascript を使用して階層として HTML に表示する効果的な方法は何ですか? (Jqueryコードで結構です)

[
    {
        "commenttext": "This is a comment",
        "parentdocumentid": "c88cbdd6d05811e19fe912314301329d",
        "doctype": "comment",
        "topleveldocumentid": "c88cbdd6d05811e19fe912314301329d",
        "createdtime": 1343222535,
        "documentid": "c0341e96d65b11e1a91d12314301329d"
    },
    {
        "commenttext": "This is a another comment",
        "parentdocumentid": "c88cbdd6d05811e19fe912314301329d",
        "doctype": "comment",
        "topleveldocumentid": "c88cbdd6d05811e19fe912314301329d",
        "createdtime": 1343222639,
        "documentid": "fe5209e0d65b11e1a91d12314301329d"
    },
    {
        "commenttext": "Yet another comment",
        "parentdocumentid": "c88cbdd6d05811e19fe912314301329d",
        "doctype": "comment",
        "topleveldocumentid": "c88cbdd6d05811e19fe912314301329d",
        "createdtime": 1343297245,
        "documentid": "b2d9f0f0d70911e1903d12314301329d"
    },
    {
        "commenttext": "I have a comment",
        "parentdocumentid": "c88cbdd6d05811e19fe912314301329d",
        "doctype": "comment",
        "topleveldocumentid": "c88cbdd6d05811e19fe912314301329d",
        "createdtime": 1343364418,
        "documentid": "1971ca6cd7a611e180fa12314301329d"
    }
]

編集:コメントに続いて、より具体的な質問があります:具体的には、私の質問は:

1: この JSON データ構造はリンクされたリストですか?" (つまり、各アイテムはその親を指定します)

2: リンクされたリストを繰り返し処理し、並べ替えられたコメント階層として表示するためのよく知られたアルゴリズムはありますか? はいの場合、誰かが私に説明を案内できますか?

3: コメント階層は「順序付きツリー」の同義語ですか?

ありがとう

4

1 に答える 1

-1

テンプレートにはアンダースコア ライブラリを使用し、for ... inループを使用して配列内の各オブジェクト (コメント) をループします。

以下は、この方法を使用して従うべき基本パターンのモックアップです。

var data = {...your json obj...},
    markup = $("#tmpl").html(),
    commentTmpl = _.template(markup);

for (comment in data) {
    $("#comment-list").append( commentTmpl(comment) );
}

そしてあなたのテンプレート:

<script type="javascript/template">
    <li><%= commenttext %></li>
</script>

学ぶためにこれらを読んでください:

于 2012-07-28T01:17:19.273 に答える