2016-08-10 7 views
0

Не могли бы вы рассказать мне, почему я не могу работать с Reactive Var в функции тайм-аута? Я попытался изменить Reactive Var после 1 с таймаутом, но это невозможно, хотя я не работают ти того же шаблона все время:!.Uncaught TypeError: Невозможно прочитать свойство '(MyReactiveVarName' of null

Template.instance().taskNumRV.set(0); => works well 
    setTimeout(function() { 
    Template.instance().taskNumRV.set(2); => Uncaught TypeError: Cannot read property 'taskNumRV' of null 
    }, 1000); 

Спасибо

+0

Я не уверен, так как это было какое-то время, я не использую Blaze, но думаю, вы вызываете этот код внутри помощника вправо? – Ethaan

+0

Я назвал этот код внутри обработчика событий. Спасибо, что заинтересованы в том, чтобы помочь мне, следующий ответ работает отлично! –

+0

, если назвать это внутри обработчика событий почему не только 'Template.xxxx.events ({ 'событие': (событие, шаблон) => { SetTimeout (функция() { template.taskNumRV.set (2) }, 1000); }} }). У вас есть 2 аргумента 'event' и' template' для обработчиков событий, поэтому вам не нужно ссылаться на них с помощью 'Template.instance()' – Ethaan

ответ

0

Когда функция обратного вызова вызывается, Template.instance() больше не относится к соответствующему примеру шаблона чтобы исправить это назначить Template.instance() локальной переменной, затем используйте эту переменную в вашем обратном вызове setTimeout. Например:

const instance = Template.instance(); 
setTimeout(function() { 
    instance.taskNumRV.set(2); 
}, 1000); 
+0

Благодарим за помощь! Ваша рекомендация работает отлично! –

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