5

がある場合にのみ実行したいコードが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;
        };
    }


});

ここで何が間違っているのかわかりません。:(
助けてください。

4

2 に答える 2

10

noUser ヘルパーの代わりに if else 条件を使用する必要があります。また、ログイン中に「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 ヘルパーを使用する必要があります。

于 2014-10-26T18:21:59.777 に答える
0

このようにコードをリファクタリングしてみませんか?

{{#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を参照して、読み込みインジケーターを表示することをお勧めします。

于 2014-10-26T17:14:39.720 に答える