我想在给定集合中的任何会话变量发生变化时运行一个函数。目前我这样做:
Meteor.autorun( ->
Session.get("var1")
Session.get("var2")
runMyFunction()
)
这有效,但似乎有点尴尬,因为依赖是非常人为的。是否有更清洁的方法来实现同一目标?
为故事添加一些上下文: 在现实生活中,我希望在布局更改时重置加载图像的动画状态(类)。这些会话变量控制布局。
答案 0 :(得分:1)
使用您正在使用的设计并没有错。如果您想使用更具体的内容并进行自定义调整,请查看Deps.dependency,它可以让您创建自定义的反应函数/变量。
EventedMind对于如何在http://www.eventedmind.com/posts/meteor-build-a-reactive-data-source创建一个很好的视频广播
值得注意的是,Meteor.autorun
正在折旧,而有利于Deps.autorun
**更新:小例子:
var cssClass = "cls1";
var cssDep = new Deps.Dependency;
getCssClass = function () {
cssDep.depend()
return cssClass;
};
setCssClass = function (w) {
if(w!=cssClass) {
cssClass = w;
cssDep.changed();
runMyFunction();
}
};
然后使用setCssClass(newvalue)
和getCssClass()
分别设置和获取值,而不是Session
get
和set
方法