Помощник регистрации Meteor Iron-Router с текущим маршрутом запускается до загрузки маршрутизатора

Регистрация помощника с текущим маршрутом возвращает ошибку в консоли:

Exception in template helper: TypeError: Cannot read property 'getName' of undefined

А после загрузки Router - работает нормально. Как избавиться от этой ошибки консоли?

Вспомогательный код:

if (Meteor.isClient) {

  // create global {{route}} helper
  Handlebars.registerHelper('route', function () {
    return Router.current().route.getName();
  });

}

person Dariusz Sikorski    schedule 11.06.2015    source источник


Ответы (2)


Используйте метод под названием охрана:

    // create global {{route}} helper
  Handlebars.registerHelper('route', function () {
    return Router.current() && 
           Router.current().route &&  
           Router.current().route.getName &&
           Router.current().route.getName();
  });
person Kuba Wyrobek    schedule 11.06.2015
comment
будет ли он возвращать false, пока route.getName() не будет доступен? - person Billybobbonnet; 11.06.2015

Вам следует попробовать добавить дополнительный параметр в данные вашего шаблона в хук onAfterAction вашего маршрута:

onAfterAction: function() {
  this.data.route = this.current().route.getName();
}

Как только вы это сделаете, вы сможете получить доступ к своему маршруту, используя yourTemplate.data.route

Код не проверен.

person Billybobbonnet    schedule 11.06.2015