首先感谢您的帮助并原谅我的婴儿 Meteor 和 Bootstrap 技能。我遇到了与此处提出的问题类似的问题,该问题产生了一些建议但没有解决方案。我想使用#each 在 Meteor 模板中使用来自 MongoDB 的数据填充 BootStrap 网格。由于 BootStrap 网格有 12 列,我想每行显示 4 个“单元格”,我相信我需要 -
- 使用创建一行。
- 在 ...element... 中输出四个数据元素
- 用 关闭“行 div”。
- 使用...创建下一行
- 冲洗并从步骤 2 开始重复。
使用从数组/集合返回数据的 {{#each...}} 块执行第 2 步。
我的流星模板看起来像这样(我正在从优秀的“发现流星”一书中扩展一个例子) -
<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>
Helpers 的 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 个)-
<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 并开始下一个。任何人都可以建议修复我的代码或使用 Meteor 中的动态数据填充网格的替代方法吗?