Метеору требуется время, чтобы узнать, есть ли {{currentUser}} или нет

У меня есть несколько кодов, которые я хочу запускать только при наличии 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;
        };
    }


});

Не знаю, что я делаю неправильно здесь. :(
Помогите пожалуйста.


person metpb    schedule 26.10.2014    source источник


Ответы (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, чтобы показать индикатор загрузки, если это необходимо.

person saimeunt    schedule 26.10.2014