我读过这个 流星模板助手多次开火 并试图在不涉及任何收藏的情况下复制这一点。

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

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

和模板看起来像这样:

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

在控制台中,我期望看到"被解雇"只有一次,但helper实际上被调用了两次?所以如果我的助手正在访问集合并从那里获取数据,每次我使用{{helper。key}}它执行查询?这是它应该如何工作?

有帮助吗?

解决方案

是的,你是对的,每次你在模板中使用它时,模板系统都会调用一个助手。

我想你要问的是,如果这是有效的集合,因为他们被一次又一次地调用。

这就是流星的原因 .find() 返回一个游标,它是一种缓存。如果你试图找到一些东西,你可以看到这个 .find(), ,你会得到一个对象,但实际上不是你的数据。游标只在需要时获取数据,因此它不像看起来那么低效。

追加 .fetch() 实际上获取数据并且不使用此缓存,这就是为什么它效率较低并且通常建议不要用作 return 助手的值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top