2015-10-02 3 views
0

У меня есть ReactiveVar, который мне нужно прочитать и изменить внутри инициализированного плагина jQuery. К сожалению, я не могу найти способ вызвать контекст моего шаблона внутри обратных вызовов события jQuery. Это все клиентская сторона. Я не могу использовать сеанс здесь. Вот код:Как я могу изменить ReactiveVar внутри события плагина jQuery?

Setup мой вар

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

Init мой 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? 
    } 
}); 

Я пробовал запустить функцию init в автозагрузчике без везения. Я знаю, что могу использовать сессию здесь, но мне действительно нужна реактивная переменная, которая будет уничтожена вместе с шаблоном. Любые идеи о том, как моделировать это?

ответ

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); 
    }); 
}; 
+0

Спасибо, я подумал о том, что, но предполагается, по каким-то причинам контекст переменной будет потеряно, если бы я прошел это тот путь ... пока он работает как шарм. Благодаря тонну. – danSiebes

Смежные вопросы