And*_*ndy 6 javascript grid twitter-bootstrap meteor
首先感谢您的帮助并原谅我的婴儿Meteor和Bootstrap技能.我对这里提出的问题有一个类似的问题,它产生了一些建议,但没有解决方案.我想使用#each在Meteor模板中使用来自MongoDB的数据填充BootStrap网格.由于BootStrap网格有12列,我想每行显示4个'单元',我相信我需要 -
使用从{{#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>
Run Code Online (Sandbox Code Playgroud)
助手的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);
};
Run Code Online (Sandbox Code Playgroud)
这一切似乎都有效,至少在计算#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>
Run Code Online (Sandbox Code Playgroud)
请注意<div class=row>...</div>
在跨度的中间?看起来不对,它应该关闭前一个'行'DIV并开始下一个.任何人都可以建议修复我的代码或使用Meteor中的动态数据弹出网格的替代方法吗?
您可以在呈现数据之前对其进行分组:
Template.projectList.helpers({
projects: function () {
all = Projects.find({}).fetch();
chunks = [];
size = 4;
while (all.length > size) {
chunks.push({ row: all.slice(0, size)});
all = all.slice(size);
}
chunks.push({row: all});
return chunks;
}
});
<template name="projectList">
{{#each projects}}
{{> projectRow }}
{{/each}}
</template>
<template name='projectRow'>
<div class='row span12'>
{{#each row }}
{{> projectItem}}
{{/each}}
</div>
</template>
<template name="projectItem">
<div class="span4">
<h3><a href="{{projectPagePath this}}"> {{title}} </a></h3>
<p> {{subtitle}} </p>
<p> {{description}} </p>
<p><img src="{{image}}"/></p>
<p> {{openPositions}} </p>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5798 次 |
最近记录: |