我不仅仅是Meteor,而是一般的剧本。我遇到了一个程序问题。我有一个存储时间的集合。我希望每次都在它自己的div中显示。我有这样的集合。
Timeslots = new Mongo.Collection('times');
Timeslots.insert({Time: "8:00am"});
Timeslots.insert({Time: "8:30am"});
Timeslots.insert({Time: "9:00am"});
Timeslots.insert({Time: "9:30am"});
辅助函数
Template.Available.helpers({
'newtime': function(){
return Timeslots.find()
}
});
我希望每次都能访问它自己的div。因此,上午8:00的一个div为8:30等。
我的模板html是
<div class="col-sm-2 available open" id="opentime">
<h2 class="time">
{{#each newtime}}
<p>{{Time}</p>
{{/each}}
</h2>
<p class="text"></p><br>
<p class="text"></p><br>
</div>
然而,我有20次20个不同的div。那么我该如何访问集合中的值。其次,我应该如何更改此模板,以便它访问正确的div?感谢您的建议和意见。我相信我离开了。
答案 0 :(得分:0)
只需在每个循环中包含div:
<template name = "Available">
{{#each newtime}}
<div class="col-sm-2 available open" id="opentime">
<h2 class="time">
<p{{Time}}</p>
</h2>
</div>
{{/each}}
</template>
只包含一次 - 你不应该对一堆div进行硬编码,这就是流星为你做的工作! :)
这也将允许反应性,因此你可以做一些事情,比如打开另一个浏览器窗口到你的应用程序,在控制台中写Timeslots.insert({Time: "9:30am"});
,如果仍然包含不安全和自动发布包,你可以看到列表更改在第一个浏览器窗口中。
Timeslots.find({})
括号内的额外的parens。 Aslo,在循环中,你错过了{{Time}}
的括号
另外,请注意,每次流星重启时,您当前的代码都会将数据添加到数据库中,这很多。您应该检查并查看数据库中是否有任何内容,然后添加种子数据。要做到这一点:
if (Timeslots.find().count() === 0) {
Timeslots.insert({ time: '8:30am' });
Timeslots.insert({ time: '9:00am' });
}
在此期间,您始终可以使用meteor reset
清除数据库。
我已经编辑了你的项目,以便把它带到我认为你想要的地方,它不完整,但它足以让你超越你所处的障碍。我拿出了一些按钮,但您可以将它们添加回来,或者更好,只需将更改调整到您自己的代码中即可。你非常接近!!该文件在这里:
https://www.dropbox.com/s/b162junes4usew4/teetimes-master.zip?dl=0
这应该足以让你开始了!