2016-04-13 8 views
2

Basit bir oturum açma özelliği uygulamaya çalışıyorum. DOM, $ window.sessionStorage.currentUserId5 oturumunun var olup olmadığına bağlı olarak farklı bir öğe yüklemesini istiyorum. Ama eklemiş koşullu deyim sadece

<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> 

Kontrolör

Kullanıcı düğmesini tıkladığında else {} ifadesini kullanarak tutar) (.run ve bu denir $, window.sessionStorage burada oluşturulmalıdır

$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) { 

    }); 

cevap

0

Kaba olmak istemiyorum ama sanırım soru aslında Onsen UI ile ilgili değil. Kullanıyor olsanız da, Onsen UI kullanımının asıl sorunuzu değiştirdiğinden şüpheliyim. (Onsen UI kodu bir şekilde bozmazsa).

Kullandığınız, ngStorage modülüdür. Gördüğüm kadarıyla, yerel ve sessionStorage'a erişmenin normal yolu sadece $ penceresinden değil, doğrudan onlara sahip olmak gibi görünüyor.

Sadece $sessionStorage ürününü kullanmayı deneyebilir ve doğrudan kullanabilirsiniz. Sorunun, bir şekilde oturumu yeniden yükleyen bir tarayıcıya bağlanmış olabileceğini düşünüyorsanız, $localStorage'u deneyebilir ve işe yarayıp yaramadığını görebilirsiniz. Deneyebileceğiniz son şey, normal localStorage ve sessionStorage'un sizin için çalışıp çalışmadığını görmektir.

Ve sen

$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 { 
     ... 
    } 
} 

Genellikle alert yerine console.log kullanmak daha iyidir gibi bir şey yapabilirsiniz, ancak dek yürütme durur beri bu durumda alert iyi olabilir o anda ne hata ayıklamak istiyorsanız Tamam'ı tıklarsın.

Diğer seçenek, tarayıcı denetçisinin konsolunda preserve log seçeneğini tıklatmaktır. Krom konsolu açmak için Ctrl + Shift + J veya Cmd + Opt + J'u yapabilirsiniz. Diğer tarayıcılarda da günlükleri console.log'dan görebileceğiniz benzer konsollar bulunur. Genellikle bu tür konular dış yardım gerektirmeden hata ayıklanabilir.

İlgili konular