Метеоритный маршрутизатор - как я могу определить, требует ли текущий маршрут входа пользователя в систему?
Я использую железный роутер. Некоторые маршруты моего проекта требуют рендеринга, только если пользователь вошел в систему, а некоторые - независимо от того, вошел ли пользователь в систему или нет. Я пытался registerHelper
который определяет, если страница requireLogin
или нет, но по какой-то причине, даже если маршрут требует входа в систему, отображается неправильный раздел.
Вот шаблон макета:
<template name="layout">
{{#if requireLogin}}
<!-- ... render route content or login form ... -->
{{#if currentUser}}
{{> yield}}
{{/if}}
{{#unless currentUser}}
{{> loginPage}}
{{/unless}}
{{/if}}
{{#unless requireLogin}}
<!-- ... render route content ... -->
{{> yield}}
{{/unless}}
</template>
Пример страницы маршрута с requireLogin
Информация:
<template name="pageUser">
{{requireLogin true}}
<!-- ... some user page content ... -->
</template>
<template name="pageTermsOfUse">
{{requireLogin false}}
<!-- ... some Terms of use page content ... -->
</template>
И код клиента:
if (Meteor.isClient) {
Handlebars.registerHelper("requireLogin", function (requireLogin) {
console.log(requireLogin)
return requireLogin;
});
};
console.log
должен вернуться true
для страницы пользователя и false
Условия использования страницы, но вместо этого она регистрирует:
undefined
undefined
true
Даже когда requireLogin
установлен в True раздел {{#unless requireLogin}}
оказано. Любое предложение, как решить эту проблему, может помочь.
1 ответ
Вам нужно будет сохранить requireLogin
ценность где-то. Вы можете просто использовать переменную сеанса.
Template.registerHelper("requireLogin", function (requireLogin) {
if(requireLogin) Session.set('requireLogin', requireLogin);
return Session.get('requireLogin');
});
Кроме того, я бы использовал Template
и не Handlebars
,