1

これができるかどうかはわかりませんが、次の JSON 構造があります。

var data = {"obj": [
              {"user": "Fred", "age": "23", "type": "personal"},
              {"user": "Ralph", "age": "32", "type": "business"},
              {"user": "John", "age": "44", "type": "other"}
             ]
           };

「タイプ」に基づいてユーザーと年齢を表示したいHTMLページに3つのターゲット領域があります。私はこれらをレンダリングするためにハンドルバーを使用しており、これを私のajaxに持っています:

var source, 
template = Handlebars.compile(source), 
data;

$.each(data['obj'], function (i, o) {
    if (o['type'] === "personal") {
        source = $("#personal").html();
        $("#place1").html(template(data));
    } else if (o['type'] === "business") {
        source = $("#business").html();
        $("#place2").html(template(data));
    } else if (o['type'] === "casual") {
        source = $("#other").html();
        $("#place3").html(template(data));
    }
});

$.each 関数が各オブジェクト配列を指定された領域に送信するようにしたいと思っていましたが、最終的にはバッチを 1 つのセクションに送信し、次に次のセクションに送信するだけです。助けてください!

4

1 に答える 1

1

もうすぐです。コンパイルされたテンプレート関数はtemplate、あなたの場合、引数としてオブジェクトを受け取るので、次のように言うことができます。

$('#place1').html(template(o));

次に、テンプレートはデータにアクセスするため{{user}}にとを使用します。{{age}}例えば:

{{user}}'s age is {{age}}

タイプごとに実際のテンプレートを変更する場合は、Handlebars.compileもう一度呼び出してください。

if(o.type === 'personal') {
    template = Handlebars.compile($('#personal').html());
    $('#place1').html(template(o));
}

必要に応じて、コンパイルされたテンプレートをオブジェクトにキャッシュできます。

于 2012-09-24T01:50:24.397 に答える