Я пробовал это несколько разных способов, и они оба ведут себя одинаково (см. Ниже код). Я использую spacebars, если условие (и попытался использовать хелпер), чтобы проверить, вошел ли пользователь в систему, а затем отображать логин/регистрационные ссылки, если они не являются. Если они есть, спрячьте их.Meteor Spacebars {{#if someCondition}} показывает данные кратко на странице обновления
Что я заметил, так это то, что при загрузке начальной страницы (если они перемещаются назад с другого сайта), ссылки входа/регистрации отображаются быстро, прежде чем скрываться (если пользователь все еще вошел в систему). Есть ли способ гарантировать, что никакие элементы не будут отображаться в представлении, если условие ложно? Мне кажется, что он должен проверить, прежде чем представление начнет рендеринг, а затем отобразит соответствующие элементы на странице.
Спасибо за помощь! -Крис
Решение мерцания, что я испытывал: я проверяла против пользователя, хотя вид был рендеринг быстрее, чем запрос DB. Я добавил выражение охраны (см. Ниже) и, похоже, позаботится о мерцании.
isUserLoggedOut: function() {
var user = Meteor.user();
if(Meteor.user()) {
return user && false;
} else{
return user && true;
}
}
Попытка # 1:
Template.headerTpl.helpers({
isUserLoggedIn: function() {
var user = Meteor.user();
if(user) {
return false;
} else{
return true;
}
}
});
<template name="headerTpl">
{{#if isUserLoggedIn}}
<li style="display:none;"><a href="{{pathFor 'userRegistrationFormTpl'}}" id="signup-js">Sign Up</a></li>
<li><a href="{{pathFor 'userLoginFormTpl'}}" id="login-js">Login</a></li>
{{/if}}
</template>
Попытка # 2:
Template.headerTpl.helpers({
isUserLoggedIn: function() {
var user = Meteor.user();
if(user) {
return "hide";
} else{
return "show";
}
}
});
<template name="headerTpl">
<li class={{isUserLoggedIn}}><a href="{{pathFor 'userRegistrationFormTpl'}}" id="signup-js">Sign Up</a></li>
<li class={{isUserLoggedIn}}><a href="{{pathFor 'userLoginFormTpl'}}" id="login-js">Login</a></li>
</template>
Попытка № 3:
{{#if currentUser}}
{{else}}
<li style="display:none;"><a href="{{pathFor 'userRegistrationFormTpl'}}" id="signup-js">Sign Up</a></li>
<li><a href="{{pathFor 'userLoginFormTpl'}}" id="login-js">Login</a></li>
{{/if}}
Попытка # 4:
<template name="headerTpl">
{{#if isUserLoggedOut}}
{{> signInLinksTpl}}
{{/if}}
</template>
<template name="signInLinksTpl">
<li style="display:none;"><a href="{{pathFor 'userRegistrationFormTpl'}}" id="signup-js">Sign Up</a></li>
<li><a href="{{pathFor 'userLoginFormTpl'}}" id="login-js">Login</a></li>
</template>
Template.headerTpl.helpers({
isUserLoggedOut: function() {
if(Meteor.user()) {
return false;
} else{
return true;
}
}
});
все было так. Я попробовал несколько из вышеупомянутых решений, хотя не смог заставить их работать так, как я этого хотел. сделал трюк, не говоря уже об использовании новых технологий Meteor! – Centinel3