4

dust.js javascriptテンプレートエンジンを使用して、配列を直接渡したい:

var templateContents; //loaded by require.js
var compiled = dust.compile(templateContents, "viewElements");
dust.loadSource(compiled);
dust.render("viewElements", ["bob", "joe", "sue"], function(err, out){
    $('#view').html(out);
});

配列を直接処理するためのテンプレートファイルを作成するにはどうすればよいですか?私は次のような多くのことを試しました:

{.}<br>

{#.}
 {.}
{/.}

しかし、配列またはその中の要素を正しく参照していないようです。最初の例は次のように出力します。[オブジェクトオブジェクト]

渡す各配列に名前を付けることはできますが、配列は実際にはバックボーンコレクションからのものであり、そうするのは余分な作業のように思われるため、そうする必要がないようにしています。

4

2 に答える 2

10

元の質問で試したものの1つで何がうまくいかなかったのか正確にはわかりませんが、これを指摘してくれたTrevorに感謝します.

dust.render("viewElements", ["bob", "joe", "sue"], function(err, out){
    $('#view').html(out);
});

これはこれで動作します:

{#.}{.}<br>{/.}

オブジェクトの配列がある場合:

dust.render("viewElements", [{name:"bob"}, {name:"joe"}, {name:"sue"}],
    function(err, out){
        $('#view').html(out);
    });

の name プロパティを参照することでレンダリングできます。エレメント:

{#.}{.name}<br>{/.}

または直接:

{#.}{name}<br>{/.}
于 2012-08-15T21:11:09.190 に答える
3

この答えは遅すぎるかもしれません:)

このコードは私にとってはうまくいくようです(レンダリング中に配列をデータオブジェクトとしてテンプレートに渡しました):

var compiled = dust.compile("{#data}{.}<br>{/data}", "viewElements");
        dust.loadSource(compiled);
        var arr = ["bob", "joe", "sue"];
        dust.render("viewElements", {"data" : arr}, function(err, out){
            $('#content').html(out);
        });
于 2012-08-14T01:25:04.847 に答える