javascript - Meteor {{#if currentUser}} 的行为不符合预期

标签 javascript jquery meteor router iron-router

我有一个代码块包裹在一个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/

相关文章:

asp.net - 分配 location.href 时,请说明 url 编码(在 asp.net 和 firefox 中)

javascript - 如何使用 Chrome Extension API 获取网页的所有 HTTP 请求

javascript - 如何在使用 Jquery 展开 div 元素后找到 html

javascript - jQuery UI 无法在选项卡中工作

javascript - 前一个查询的 meteor 返回名称

javascript - 笑脸解析器和 xss 注入(inject)保护

javascript - Javascript 中字符串的长度始终为 1?

javascript - 我如何在 php codeigniter 上运行 ajax

meteor - Momentjs 在 meteor react ?

javascript - 在 meteor JS 中检查用户密码