まず、あなたの助けに感謝し、私の幼児のMeteorとBootstrapのスキルを許してください. ここで提起された質問と同様の問題があり、いくつかの提案が生成されましたが、解決策はありません。#each を使用して、Meteor テンプレートで MongoDB のデータを使用して BootStrap グリッドを設定したいと考えています。BootStrap グリッドには 12 列があり、行ごとに 4 つの「セル」を表示したいので、必要だと思います-
- を使用して行を作成します。
- ...element... 内の 4 つのデータ要素を出力します。
- で「row div」を閉じます。
- ... を使用して次の行を作成します。
- すすぎ、ステップ 2 から繰り返します。
ステップ 2 は、配列/コレクションからデータを返す {{#each...}} ブロックを使用して実行されます。
私の Meteor テンプレートは次のようになります (優れた「Discovering Meteor」の本から例を拡張しています) -
<template name="postsList">
<div class="posts">
<div class='row-fluid' style="margin-left:1%">
{{breakInit}}
{{#each posts}}
<div class="span3">
{{> postItem}}
</div>
{{breakNow}}
{{/each}}
</div>
</div>
</template>
ヘルパーの JavaScript は次のようになります。
Template.postsList.breakInit = function() {
Template.postsList.docCount = 0 ;
};
Template.postsList.breakNow = function() {
count=Template.postsList.docCount + 1 ;
result="";
if ( count == 4 ) {
count = 0 ;
Template.postsList.docCount = count ;
result="</div><div class=row>" ;
};
Template.postsList.docCount = count ;
return new Handlebars.SafeString(result);
};
これは、少なくとも #each によって出力された要素をカウントし、 を返して</div><div class=row>
新しい行を開始し、カウンターをリセットするという点では、すべて機能しているように見えます...ただし、返された HTML は現在の行を終了して次の行を開始します私が期待するように、Bootstrap(またはMeteorまたは私のブラウザ)によって処理されないようです。として再注文されたよう<div class=row></div>
です。FireFox の Inspector のこのスクリーン キャップを参照してください (コードは 6 つの要素を出力し、最初の行に 4 つ、2 番目の行に 2 つ) -
<div id="main" class="row-fluid">
<div class="posts">
<div class="row">
<div class="span3"> … </div>
<div class="span3"> … </div>
<div class="span3"> … </div>
<div class="span3"> … </div>
<div class="row"> … </div> <-- The problem...
<div class="span3"> … </div>
<div class="span3"> … </div>
</div>
</div>
</div>
<div class=row>...</div>
スパンの真ん中にあることに注意してください。正しく見えません。前の「行」DIV を閉じて、次の DIV を開始する必要があります。私のコードの修正または Meteor で動的データを使用してグリッドに入力するための代替方法を誰かが提案できますか?