每次调用时都会访问Meteor模板助手

时间:2014-01-11 10:54:02

标签: meteor handlebars.js meteor-helper

我已经阅读了这个Meteor template helpers fire multiple times并尝试重现这一点而不涉及任何收藏。

所以我得到了这样的帮助:

Template.myTemplate.helpers({
    test: function(){
        console.log("Fired");
        return {
            name : "Foo"
        };
    }
});

模板看起来像这样:

<template name="myTemplate">
    {{test.name}}{{test.name}}
</template>

在控制台我预计只会看到“被解雇”一次,但实际上两次调用助手?因此,如果我的帮助者正在访问集合并从那里获取数据,那么每次使用{{helper.key}}它都会执行查询?这是怎么回事?

1 个答案:

答案 0 :(得分:1)

是的,你是对的,每次在模板中使用时,模板系统都会调用帮助器。

我想你要问的是,这是否对收藏有效,因为它们被一次又一次地调用。

这就是为什么meteor的.find()返回一个缓存的游标。如果您尝试使用.find()查找内容,可以看到此内容,您将获得一个对象,但实际上并不是您的数据。游标仅在需要时获取数据,因此它看起来效率不高。

追加.fetch()实际上提取数据并且不使用此缓存,这就是效率较低的原因,并且通常建议不要将其用作帮助程序的return值。