如何修改jQuery插件事件中的ReactiveVar?

时间:2015-10-02 17:33:21

标签: jquery meteor

我有一个ReactiveVar,我需要从一个初始化的jQuery插件中读取和修改。不幸的是,我找不到在jQuery事件回调中调用我的模板上下文的方法。这是所有客户端。我不能在这里使用会话。这是一些代码:

设置我的var

Template.player.onCreated(function(){
   this.isPlaying = new ReactiveVar;
   this.isPlaying.set('false');
})

初始化我的jQuery插件

Template.player.onRendered(function() {
    initPlayer()
});

initPlayer()的相关部分:

master = new TimelineMax({
    paused: true
});
master.eventCallback("onUpdate", function() {
        //Template.instance().isPlaying.set(false) //can't do this here
        //reactive variables in jquery events are out of scope?
    }
});

我试过在autotracker中运行init函数而没有任何运气。我知道我可以在这里使用Session但我真的想要一个与模板一起被销毁的反应变量。有关如何建模的任何想法吗?

1 个答案:

答案 0 :(得分:1)

您应该能够将onRendered中的变量传递给init函数。尝试这样的东西:

Template.player.onCreated(function(){
  this.isPlaying = new ReactiveVar(false);
});

Template.player.onRendered(function() {
  // pass the reactive variable to initPlayer
  initPlayer(this.isPlaying);
});

var initPlayer = function(isPlaying) {
  master = new TimelineMax({paused: true});

  master.eventCallback('onUpdate', function() {
    isPlaying.set(false);
  });
};