在集成Meteor预先存储库时,我遇到了一些奇怪的事情。请参阅以下代码
if (Meteor.isClient) {
Template.registerHelper("course_data", function() {
return [
{
name: 'course-info1',
valueKey: 'titleLong',
local: function() {
return Courses.find().fetch();
},
template: 'Course'
},
{
name: 'course-info2',
valueKey: 'catalog',
local: function() {
return Courses.find().fetch();
},
template: 'Course'
},
{
name: 'course-info3',
valueKey: 'catalogNbr',
local: function() {
return Courses.find().fetch();
},
template: 'Course'
}
这很有效,但我发现该网站遭受了开销。我认为原因的一部分依赖于上面的代码,因为我不必要地调用fetch()
三次以获得相同的对象。因此,我用Courses.find().fetch()
替换了每个courses
。
if (Meteor.isClient) {
Template.registerHelper("course_data", function() {
var courses = Courses.find().fetch();
return [
{
name: 'course-info1',
valueKey: 'titleLong',
local: function() {
return courses;
},
template: 'Course'
},
{
name: 'course-info2',
valueKey: 'catalog',
local: function() {
return courses;
},
template: 'Course'
},
{
name: 'course-info3',
valueKey: 'catalogNbr',
local: function() {
return courses;
},
template: 'Course'
}
我认为这几乎是相同的代码,但它不再起作用了。似乎没有正确获取对象。我在这里缺少什么吗?
可能相关:Waiting for meteor collection to finish before next step
答案 0 :(得分:0)
尝试:
local: courses,
而不是:
local: function() {
return courses;
},
可能函数的返回而不是值正在干扰反应评估机制。