【发布时间】:2013-09-21 14:11:49
【问题描述】:
首先感谢您的帮助并原谅我幼稚的 Meteor 和 Bootstrap 技能。我遇到了与here 提出的问题类似的问题,该问题产生了一些建议但没有解决方案。我想使用#each 在 Meteor 模板中使用来自 MongoDB 的数据填充 BootStrap 网格。由于 BootStrap 网格有 12 列,我想每行显示 4 个“单元格”,我相信我需要 -
- 使用 . 创建一行
- 在...元素...内输出四个数据元素
- 用 . 关闭“行 div”。
- 使用 ... 创建下一行
- 冲洗并从第 2 步开始重复。
使用从数组/集合返回数据的 {{#each...}} 块执行第 2 步。
我的 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>
Helper 的 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 中的动态数据填充网格的替代方法?
【问题讨论】:
标签: javascript twitter-bootstrap grid meteor