2017-10-23 8 views
0

は、私は、ユーザーとして示すアイコンが表示されAngularJS - change hrefユーザーがログインしているかどうかに基づいて属性がありますか?

<a href="#/login" class="button button-icon ion-android- 
 
    person">User</a>

私がしたいことは、ユーザーが既にログインしている場合は、ボタンをクリックすると、ユーザープロファイルページにページをリダイレクトするということです。ユーザーがログインしていない場合は、ログインページにリダイレクトします。

私はのsessionStorageにユーザー情報を保存するので、私は簡単にユーザーがログインしているかどうかを確認することができます。

factory('$loginCheck', function() { 
    return function() { 
     if(sessionStorage.getItem('email')) { 
      return true; 
     } 
     else { 
      return false; 
     } 
    }; 
}) 

私はそれを実装するためのディレクティブを使用することができます知っているが、私はそうすることを正確にどのように知りません。それを実装するベストプラクティスは何ですか?任意のアイデアが評価されます。

ありがとうございました。

答えて

0

使用ng-href

<a ng-href="{{ ctrl.getLink() }}" class="button button-icon ion-android-person">User</a> 

ctrlがあなたのアンカー要素の範囲内のコントローラであると仮定します。あなたは関数を以下のように定義することができます:

function someController($loginCheck) { 
    this.getLink= function() { 
     return $loginCheck() ? '/user/profile' : '/login'; 
    }; 
} 
+0

そうです、@ JBNizet。ありがとう!ありがとうございます。 –

+0

しかし、それは初めての動作です。ユーザーが後でログアウトする場合それに応じてリンクが変更されることはありません。私は、イベントハンドラを使用する必要があり、ログアウトイベントが発生した場合は、ボタンのURLを変更してください。 – GavinLuo

+0

このシンタックスでは、[one-time biding](https://docs.angularjs.org/guide/expression#one-time-binding)を使用しないため、問題はおそらくあなたの '$ loginCheck'ファクトリにあります。たぶん 'sessionStorage'がクリアされていないのでしょうか? –