JsRenderチュートリアル - テンプレートでオブジェクトのプロパティをループで取得する
JavaScript製でjQuery非依存なテンプレートエンジンであるJsRender/JsViewsを使ったチュートリアルを書いてみようと思います。
以前に書いたエントリJsRender入門 - Do You PHP はてなも参照してください。
今回やること
テンプレート内でオブジェクトのプロパティをループで取得しながら値を表示する
コード
<html> <body> <!-- レンダリング結果を表示するスペース --> <div id="result"></div> <script src="https://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script> <script src="js/jsrender.min.js" type="text/javascript"></script> <script type="text/javascript"> // ループ - propsタグ $(function() { // 表示するデータ(オブジェクト) var fruits = { name: "りんご", num: 3 }; // テンプレートに名前(ここでは"linkTemplate")をつけて登録する $.templates({ linkTemplate: "#template" }); // テンプレート"linkTemplate"に変数fruitsを渡し、 // レンダリング結果を表示 $('#result').html($.render.linkTemplate(fruits)); }); </script> <!-- テンプレート --> <script id="template" type="text/x-jsrender"> {{props #data}} <p>{{>key}}の値は{{>prop}}です</p> {{/props}} </script> </body> </html>
説明
JsRenderのfor文はPHPと異なり配列に対してのみ有効です。PHPで言うところのforeachに相当する構文はpropsタグになります。
{{props [オブジェクト]}} : {{/props}}
propsによるループ中、キーと値はそれぞれ"key"、"prop"で参照できます。
{{props #data}} <p>{{>key}}の値は{{>prop}}です</p> {{/props}}