每当会话变量在流星中发生变化时运行函数的正确方法是什么?

时间:2013-05-25 12:53:02

标签: meteor

我想在给定集合中的任何会话变量发生变化时运行一个函数。目前我这样做:

Meteor.autorun( ->
    Session.get("var1")
    Session.get("var2")
    runMyFunction()
)

这有效,但似乎有点尴尬,因为依赖是非常人为的。是否有更清洁的方法来实现同一目标?

为故事添加一些上下文: 在现实生活中,我希望在布局更改时重置加载图像的动画状态(类)。这些会话变量控制布局。

1 个答案:

答案 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 getset方法

相关问题