Meteor{{#if currentUser}}没有按预期运行
Meteor {{#if currentUser}} not behaving as expected
我有一块代码包在一个流星{{#if-currentUser}}块中,如下所示:
<template name="setup">
{{#if currentUser}} {{> step1}} {{else}} {{redirect}} {{/if}}
</template>
<template name="setup2">
{{#if currentUser}} {{> step2}} {{else}} {{redirect}} {{/if}}
</template>
<template name="step1">
<div class="fullscreen">
Setup: Step 1 of 2
<div class="buttons">
<a class="btn btn-primary" href="{{pathFor 'setup2'}}">Next</a>
</div>
</div>
</template>
<template name="step2">
<div class="fullscreen">
Setup: Step 2 of 2
<div class="buttons">
<a class="btn btn-primary" href="{{pathFor 'setup'}}">Previous</a>
<a class="btn btn-primary" href="{{pathFor 'home'}}">Complete</a>
</div>
</div>
</template>
在我的javascript中有一个助手函数重定向,如下所示:
//setup redirects
Template.setup.helpers({
redirect: function() {
return Router.go('login');
}
});
Template.setup2.helpers({
redirect: function() {
return Router.go('login');
}
});
然而,当我访问/setup或/setup2页面时,它们总是重定向到登录页面,即使当前用户已经登录。是什么原因导致了这种情况?感谢您的帮助。非常感谢。
就像David Weldon说的那样,你可以使用iron:router。更具体地说是例如CCD_ 1。
像这样创建te函数和钩子。
var requireLogin = function() {
if (! Meteor.user()) {
if (Meteor.loggingIn()) {
this.render(this.loadingTemplate);
} else {
this.render('redirect');
}
} else {
this.next();
}
}
Router.onBeforeAction(requireLogin, {only: 'setup'});
Router.onBeforeAction(requireLogin, {only: 'setup2'});
或者在data:function(){}
上,就像这样。
data:function(){
if(!Meteor.userId()){
this.render('redirect')
}else{
this.next();
}
}
因此,您可以删除模板助手,并在路由器逻辑上执行此操作。
currentUser
为空,因为用户正在登录。因此在检查当前用户之前请检查{{ loggingIn }}
。它可能会起作用,但这不是助手应该做的。
http://docs.meteor.com/#/full/template_loggingin
相关文章:
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Meteor{{#if currentUser}}没有按预期运行
- If语句只执行第一个条件并运行其他条件,但没有结果
- 如何在javascript中的if或else块中运行一条jsp语句
- Javascript:用if语句运行while循环,用子句随机生成内容
- 每次用户单击按钮时运行if语句检查器
- JavaScript If 语句无法正常运行
- if 语句中的一部分 JavaScript 代码运行,而同一块中的其余代码不执行.我在这里错过了什么
- JS 在不满足条件时在 if 语句中运行代码段
- 如何从PHP运行if语句来运行JS函数
- 在我的测试脚本中,我运行了 if 语句,但我从未运行过其他语句?我做错了什么
- AngularJS在ng-repeat中重新运行ng-if
- 在 10 秒内将 if(button.g == 1) 转换为自动运行
- 无论 IF 语句如何,Javascript ELSE 语句都运行
- Firefox ONLY不会在if语句中运行一行javascript代码,但会运行其他行——chrome和safari运
- 为什么在javascript中同时运行if()和else的确认?什么是解决方案
- Javascript正在运行if和else-if
- 只使用部分URL运行if/else脚本
- 如何在for循环中阻止条件语句同时运行if子句和else子句?
- 运行IF语句一次