2016-04-13 25 views
2

私は簡単なログイン機能を実装しようとしています。 $ window.sessionStorage.currentUserId5セッションが存在するかどうかに基づいて、DOMに別の要素をロードさせたいと思っています。しかし、私が追加した条件文がちょうど

<script> 
    var app = ons.bootstrap('app', ['onsen','angular-svg-round-progress','nvd3','ngStorage']).run(function($rootScope,$window){ 

     if($window.sessionStorage.currentUserId5) 
     { 
      $("#menudiv").html('<ons-sliding-menu var="menu" id="menusliding" main-page="main.html" menu-page="menux.html" max-slide-distance="85%" type="reveal" side="left" ></ons-sliding-menu>'); 
     } 
     else{ 

      $("#menudiv").html('<ons-sliding-menu var="menu" id="menusliding" main-page="login.html" menu-page="menux.html" max-slide-distance="85%" type="reveal" side="left" ></ons-sliding-menu>');    
     }   

     }); 
</script> 


<div id="menudiv"></div> 

コントローラ

ユーザーがボタンをクリックし、他の{}文を使用して保持します)(.RUNすると、これはと呼ばれ、$ window.sessionStorageのは、ここで作成する必要があります

$http.post('http://xxx-xxx.us-east-1.elasticbeanstalk.com/apipost/checkuserlogin', parameter, config).success(function (data, status, headers, config) { 

      // if login, user session created, redirected to index.html 
      if(data['result'] == 'success'){ 

       $window.sessionStorage.currentUserId5 = '5' 
       $window.location.reload(); 

      } 
      else { 
       // else error pop up 
       ons.notification.alert({ 
        message: 'Please try again' 
       }); 
      } 
     }) 
     .error(function (data, status, header, config) { 

    }); 

答えて

0

私は無礼になりたくはありませんが、実際には温泉のUIとは関係ないと思います。あなたがそれを使用しているにもかかわらず、私は温泉のUIの使用があなたの実際の質問を変更することを疑う。 (温泉のUIが何らかの形でコードを壊さない限り)

ngStorageモジュールが使用されているようです。私が見たことから、ローカルとsessionStorageにアクセスする通常の方法のように思えるのは、$ windowを経由するのではなく、直接それらを持つことだけです。

$sessionStorageが必要なので、直接使用してみてください。問題が何らかの方法でブラウザを再読み込みしてセッションなどに壊れていると思われる場合は、$localStorageを試して、動作するかどうか確認してください。あなたが試してみることのできる最後のことは、普通のlocalStoragesessionStorageがあなたのために働くかどうかだけです。

そして、あなたは何が起こるかをデバッグしたい場合は、

$http.post('...', parameter, config).success(function (data, status, headers, config) { 
    alert(data.result); 

    if(data['result'] == 'success'){ 
     $window.sessionStorage.currentUserId5 = '5' 
     alert($window.sessionStorage.currentUserId5); 
     $window.location.reload(); 
    } 
    else { 
     ... 
    } 
} 

ような何かを行うことができ、その後通常はconsole.logの代わりalertを使用することをお勧めしますが、この場合にはalertはそれがされるまで実行を停止しますので、改善することができます[OK]をクリックします。

もう1つの方法は、ブラウザインスペクタのコンソールでpreserve logオプションをクリックすることです。クロムコンソールを開くには、Ctrl + Shift + JまたはCmd + Opt + Jを実行します。他のブラウザにも同様のコンソールがあり、ログはconsole.logから見ることができます。通常、これらのタイプの問題は、外部の助けを必要とせずにデバッグすることができます。

関連する問題