Meteor Template.registerHelper() не работает в блоке {{#if}}

Определены 3 глобальных хелпера в Meteor следующим образом:

Template.registerHelper('activeTrips', function () {
    console.log("Global Active Trips");
    return Trips.find().count();
});

Template.registerHelper('isSuperUser', function () {
    console.log("Global isSuperUser");
    return Meteor.user().username === "superuser";
});

Template.registerHelpr('isAdminUser', function () {
    console.log("Global isAdmin");
    return Roles.userIsInRole(Meteor.user(), ['admin']);
});

Используется в качестве счетчика шаблонов, {{activeTrips}} отображает количество правильно!

Но другие помощники, которые возвращают True или False, похоже, не работают с конструкцией handlebars {{#if}}?

Например, {{#if isAdminUser}} do admin stuff {{/if}} никогда не работает, даже если я заставляю функцию возвращать значение true — на самом деле помощник никогда не вызывается в соответствии с выводом моей консоли.


person Charles Palanzo    schedule 04.03.2015    source источник


Ответы (1)


Во-первых, я хотел бы убедиться, что вы определили все три ваших глобальных помощника шаблона в файле Javascript, который загружается только на клиенте (расположенном в каталоге «клиент»).

Во-вторых, я бы удостоверился, что этот файл Javascript загружается до загрузки кода вашего шаблона, использующего эти помощники шаблона (например, убедитесь, что файл Javascript с глобальными помощниками шаблона находится в каталоге 'lib' в верхнем каталоге). уровень «клиент», в то время как код шаблона находится в файле Javascript в другом каталоге, таком как «шаблоны», в том же каталоге «клиент» верхнего уровня).

В-третьих, я бы убедился, что вы правильно пишете Template.registerHelper везде, где написан вспомогательный код шаблона (я заметил, что вы неправильно написали «registerHelper» в своем примере кода выше).

После проверки всего этого код по-прежнему работает не так, как ожидалось?

person Keith Dawson    schedule 04.03.2015
comment
Аааа! слишком много работы и снега! Орфографическая ошибка все исправила - просто не заметил. Тест SuperUser вызывается внутри шаблонов, которые используют isAdminUser, поэтому ни один из них не выполняется ... меня беспокоило, что activeTrips работал, а другие - нет! - person Charles Palanzo; 04.03.2015