gpt4 book ai didi

javascript - Meteor {{#if currentUser}} 未按预期运行

转载 作者:行者123 更新时间:2023-11-29 16:59:25 25 4
gpt4 key购买 nike

我有一段代码包裹在 meteor {{#if currentUser}} block 中:

<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。更具体地说,例如 Router.onBeforeAction

像这样创建函数和钩子(Hook)。

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();
}
}

因此,您可以删除模板助手并在路由器逻辑上执行此操作。

关于javascript - Meteor {{#if currentUser}} 未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29424842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com