【问题标题】:Meteor takes time to know if there's a {{currentUser}} or notMeteor 需要时间才能知道是否有 {{currentUser}}
【发布时间】:2014-12-21 22:08:38
【问题描述】:

我有一些代码我只想在有 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}} 块内的代码首先出现,然后是{{#if currentUser}} 块,{{#if noUser}} 块仅在没有用户时显示。
这是模板的帮助代码..

Template.navigation.helpers({

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

    },

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

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


});

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

【问题讨论】:

    标签: meteor meteor-blaze meteor-accounts


    【解决方案1】:

    您应该使用 if else 条件而不是 noUser 助手。为了防止在登录时显示“noUser”块,您必须使用{{ 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 助手。

    【讨论】:

      【解决方案2】:

      你为什么不这样重构你的代码呢?

      {{#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}}
      

      如果需要,您可能希望查看 http://docs.meteor.com/#meteor_loggingin 以显示加载指示器。

      【讨论】:

        猜你喜欢
        • 2011-08-26
        • 2014-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-31
        • 2021-08-04
        • 2020-01-29
        相关资源
        最近更新 更多