Meteor 需要时间才能知道是否存在 {{currentUser}}

标签 meteor meteor-blaze meteor-accounts

我有一些代码只想在没有 noUser 时运行,还有一些代码在有 currentUser 时运行。
所有这些都在导航模板内。就像这样...

   {{#if currentUser}}  
     <li class="nav"><a href="{{pathFor 'create'}}">Post</a>  
     </li>  
     <li class="nav"><a>Ola, {{thisUser}}!</a>  
     </li>  
     <li class="nav"><a href="#" id="logout">Log Out</a>  
     </li>  
   {{/if}}  

   {{#if noUser}}  
      <li class="nav"><a href="{{pathFor 'signup'}}">Sign Up</a>  
      </li>  
      <li class="nav"><a href="{{pathFor 'login'}}">Login</a>  
      </li>  
   {{/if}}  

所以问题是,当有 currentUser(即我已登录)并且我刷新页面时,{{#if noUser}} block 首先显示,然后是 {{#if currentUser}} block ,{{#if noUser}} block 只是显示当没有用户时。
这是模板的帮助程序代码..

Template.navigation.helpers({

    thisUser: function () {
            return Meteor.user().username;

    },

    noUser: function () {
        var user = Meteor.user();

        if (!user) {
            return true;
        };
    }


});

不知道我在这里做错了什么。 :(
请帮忙。

最佳答案

您应该使用 if else 条件而不是 noUser 帮助程序。为了防止在登录时显示“noUser” block ,您必须使用 {{ loggingIn }} helper 。像这样的事情:

{{#if loggingIn}}
  <p>Loggin in...</p>
{{else}}
  {{#if currentUser}}  
    <li class="nav"><a href="{{pathFor 'create'}}">Post</a>  
    </li>  
    <li class="nav"><a>Ola, {{thisUser}}!</a>  
    </li>  
    <li class="nav"><a href="#" id="logout">Log Out</a>  
    </li>  
  {{else}}  
    <li class="nav"><a href="{{pathFor 'signup'}}">Sign Up</a>  
    </li>  
    <li class="nav"><a href="{{pathFor 'login'}}">Login</a>  
    </li>  
  {{/if}}
{{/if}}

因为 Meteor 无法立即知道用户是否登录。因此你必须使用loggingIn helper。

关于Meteor 需要时间才能知道是否存在 {{currentUser}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575551/

相关文章:

javascript - meteor CollectionFS : Make sure the image is uploaded before displaying

java - meteor 和java应用程序数据推送

javascript - meteor mongodb _id 在插入后发生变化(以及 UUID 属性)

dojo - 如何防止 Meteor 观看文件?

javascript - Blaze表单的template.data在第一次提交后去哪里了?

javascript - meteor 帐户:错误调用storageLoginToken()“未定义不是函数”

javascript - 使用 Meteor 单击按钮时显示数据

javascript - 从 Meteor js 中的 2 个模板获取输入值

javascript - Meteor,跟踪用户失败的登录尝试并在 x 次尝试后禁止他们登录

meteor - 在 meteor 中使用帐户密码创建帐户