2014-01-31 3 views
0

Я сделал образец примера динамических шаблонов загрузки, используя Handlebars.SafeString(). Все отлично работает Обновить URL-адрес браузера. Когда когда-либо обновляется URL-адрес браузера, я получаю сообщение об ошибке i.e «Uncaught TypeError: свойство« undefined »объекта # не является функцией«. И эта ошибка получает только эту строку i.e return new Handlebars.SafeString(Template[Session.get('currentTemplate')]({dataKey: 'somevalue'}));. С этой строкой Работает нормально, все даже обновляется. Я использую это Handlebars.SafeString() - это динамически загружать шаблоны. Я не знал об этом. Пожалуйста, помогите мне, как это сделать.Handlebars.SafeString() вопрос в Метеор?

И что использовать dataKey в вышеуказанных ручках.SafeString()?

ответ

0

Похоже, что сигнал Session не заполняется, когда звонок выполнен, и поэтому Session.get('currentTemplate') не определен. Простая гарантия должна решить эту проблему, если вы находитесь в реактивном контексте:

if(! Session.get('currentTemplate')) return ''; 
return new Handlebars.SafeString(Template[Session.get('currentTemplate')]({dataKey: 'somevalue'})); 
+1

Я бы рекомендовал использовать 'Session.setDefault («currentTemplate»,«myHomeTemplate»)' вместо этого. http://docs.meteor.com/#session_set_default –

+0

В этом конкретном случае использование 'setDefault' приведет к тому, что другой шаблон будет рисоваться на долю секунды, и, следовательно, худшее мерцание. Для установки основного шаблона лучше использовать [Iron Router] (https://github.com/EventedMind/iron-router). –

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