流星模板帮助访问每个调用
-
26-12-2019 - |
题
我读过这个 流星模板助手多次开火 并试图在不涉及任何收藏的情况下复制这一点。
所以我得到了这样的帮手:
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
助手的值。
不隶属于 StackOverflow