【发布时间】:2016-02-11 19:38:44
【问题描述】:
我目前有一段类似这样的代码:
Tracker.autorun(function() {
var foo = Session.get("foo")
var bar = Session.get("bar")
if (bar)
console.log("foo changed and bar is set")
else
console.log("foo changed and bar is not set")
}
此代码失败,因为即使只有bar 发生更改,控制台也会打印foo changed 消息之一。
我必须在我的Tracker.autorun() 中同时使用foo 和 bar,而不会在bar 更改时运行它,我想这样做通过告诉‘Tracker’不要跟踪bar,或者如果可能的话,询问Tracker是什么引发了重新计算,而不是将函数分成不同的自动运行函数,或者手动关注Session变量的变化。
【问题讨论】:
-
您的自动运行应该不在不相关的 Session 变量更改时运行,除非 foo 依赖于它(在这种情况下它实际上是相关的)。
-
您可以简单地为每个依赖自变量的函数设置多个Tracker.autorun。但是,在您的示例中, foo 在您将其传递给函数时取决于 bar。
-
你为什么这么说?多个跟踪器可能是一种非常强大和高效的模式。
-
¬¬ 在开始赏金活动两秒钟后找到了答案,并说我在 互联网上的任何地方都找不到答案。请不要恨我。
标签: meteor meteor-tracker