【发布时间】:2016-02-24 15:17:42
【问题描述】:
我使用 Meteor 1.2.1。我目前正在开发课程目录 Web 应用程序。 我正在尝试创建一个过滤功能,就像Angular Filters。它应该让用户指定他的需求,然后当他更改过滤器时,课程列表会自动刷新。
这是我的代码:
app.html
<!-- ********** -->
<!-- courseList -->
<!-- ********** -->
<template name="courseList">
<div class="list-header">
<div>Course Name</div>
<div>Description</div>
<div>Category</div>
<div>Modality</div>
<div>Unit</div>
</div>
<div class="list-body">
{{ #each course }}
{{ > courseRow}}
<hr />
{{ /each }}
</div>
</template>
app.js
Template.courseList.helpers({
'course': function(){
Session.setDefault('course', Courses.find().fetch());
return Session.get('course');
}
});
因此,当我运行此程序时,即使数据库中存在一些虚拟数据,我也会为上面的 course helper 得到一个空集。
在我看来,问题在于Session.setDefault()。当我在找到后立即控制台记录Session.course 变量时,我得到一个空数组[],可能是因为没有时间从服务器获取数据(或者可能不是,因为我正在使用自动发布进行开发)现在,我真的不知道)。
应用一些过滤器(此处未显示代码)后,一切恢复正常。只有这个初始化才是问题所在。
我尝试在Template.courses.rendered()、Template.courses.created()、Template.courses.onRendered()、Template.courses.onCreated() 中调用Session.set()(是的,我有点绝望),但它们都不起作用。
有人可以就这个问题提出建议吗?也许我没有尝试正确的 Meteor 方法,因为我是 Meteor 初学者。
谢谢!
【问题讨论】:
标签: javascript meteor