在我的流星应用程序中,我需要加载一个与点击的项目相对应的项目数组。由于我是流星的新手,我在这里举行。这是我的代码。
Template.templatename.events({
'click .showdiv' : function()
{
Template.templatename.vname = function () {
return Db.find();
}
}
我可以通过此代码动态设置变量vname吗?这不适合我。
答案 0 :(得分:2)
我认为你误解了反应性的概念。 reactive data source将导致任何依赖它的函数(包括帮助程序)在其值发生更改时重新运行,这似乎是您在此处寻找的行为。相反,每次单击某个项目时,您都会重写辅助函数本身,这会破坏Meteor的反应数据模型的对象。会话变量可以提供帮助:
Template.templatename.events({
'click .showdiv' : function() {
Session.set('vname', Db.find());
}
});
Template.templatename.vname = function () {
return Session.get('vname');
}
如果您在{{#each vname}}
模板中使用templatename
块,则会在点击Db.find()
时自动使用.showdiv
查询的结果进行更新。如果您要做的只是显示该查询的结果,无论是否已经注册了点击,它都将如下所示:
Template.templatename.vname = function () {
return Db.find();
}
请注意,由于查询将返回一个游标(这很好,但您需要使用{{#each ...}}
循环播放它 - 仍然不清楚您要在此处填充哪些数据 - 使用{{1}如果你只想要一个项目),它的内容不会依赖于click事件的固有内容(比如你单击的findOne
)。在前一个示例中,它将无法显示任何内容,直到第一次单击(之后您必须使用.showdiv
重置以阻止它再次显示任何内容。)