jsrender
を使用して、ブートストラップベースのHTMLテンプレートを作成し、javascriptを使用してHTMLコンテンツをレンダリングしています。JsRenderを使用して単純な配列データから行/列レイアウトを作成します
var data = [
{
'img': 'img/books/kiterunner.jpg',
'title': 'The Kite Runner',
'authors': 'Khaled Hosseini'
},
{
'img': 'img/books/tokillamockingbird.jpg',
'title': 'To Kill A Mocking Bird',
'authors': 'Harper Lee'
},
{
'img': 'img/books/hungergames.jpg',
'title': 'The Hunger Games',
'authors': 'Suzanne Collins'
}
.....
]
をたどり、現在data
内の各オブジェクトを個別に時々表示されます
<div class="row-fluid" id="result">
<script id="template" type="text/x-js-render">
<div class="col-md-3 col-sm-6">
<div class="image-tile outer-title text-center">
<img alt="{{:title}}" src="{{:img}}" style="max-height:350px;">
<div class="title mb16">
<h5 class="uppercase mb0">{{:title}}</h5>
<span>{{:authors}}</span>
</div>
</div>
</div>
</script>
</div>
次のように私が生成する対応するHTMLがあるとして、私のデータは、画像のサイズが大きく、混乱させる行が見える方法。ですから、4
のオブジェクトがすべてdata
になるたびに、コンテンツを含むdiv.row-fluid
の作成を繰り返す必要があります。私は現在、テンプレートを登録し、必要なHTMLにデータをレンダリングするために次のことを行います。 data
の値を変更せずに{{for}}
を使用する方法を理解できないようです。
ありがとうございます。
編集:私は、明示的なHTMLの文字列の連結をやって、その後div.row-fluid
ニーズを作成するかどうかを決定するためにif
文でindex%4
を使用しながら、それらをレンダリングすることにより、これを行うために管理しています。しかし、もっと洗練されたソリューションが本当に好きです。 jquery
タグを追加すると、より広い視認性が得られます。
グレート:
は、カスタム
{{range}}
タグのこのバージョンを使用して!ありがとうございました@BorisMoore もしあなたがこの質問を好きだったら、私はそれについてアップポットに感謝します。 –シナリオは良いです。 div.row-fluidを4つの項目ごとに繰り返すようにしたいので、処方/コードはちょっと奇妙ですが、複数のテンプレート宣言インスタンスを持つかのように、テンプレート宣言の外側に表示します。同じテンプレートの複数の宣言は一般的に避けなければならず、テンプレートは一般的に一度だけコンパイルされます。 – BorisMoore