2016-04-13 4 views
2

Ich versuche, eine einfache Anmeldefunktion zu implementieren. Ich möchte, dass das DOM ein anderes Element lädt, abhängig davon, ob die $ window.sessionStorage.currentUserId5-Sitzung existiert oder nicht. Aber die bedingte Aussage, die ich hinzugefügt habe .run() hält nur die sonst mit {} Anweisung

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

-Controller

Benutzer Schaltfläche klickt und diese aufgerufen wird, sollte $ window.sessionStorage hier erstellt werden

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

    }); 

Antwort

0

ich will nicht unhöflich sein, aber ich denke, die Frage nicht wirklich Onsen UI verwandt ist. Obwohl Sie es verwenden, bezweifle ich, dass die Verwendung der Onsen-Benutzeroberfläche Ihre eigentliche Frage ändert. (Es sei denn, die Onsen UI bricht den Code in irgendeiner Weise.)

Was Sie zu verwenden scheinen, ist das ngStorage Modul. Von dem, was ich gesehen habe, scheint es, als ob der normale Zugriff auf local und sessionStorage einfach nur direkt und nicht über $ window erfolgt.

So können Sie versuchen, nur $sessionStorage erfordern und verwenden Sie es direkt. Wenn Sie der Meinung sind, dass das Problem mit einem Neustart des Browsers verbunden sein könnte, der die Sitzung usw. unterbricht, können Sie versuchen, $localStorage und sehen, ob es funktioniert. Die letzte Sache, die Sie versuchen könnten, ist nur zu sehen, ob die normalen localStorage und sessionStorage für Sie arbeiten.

Und wenn Sie möchten, debuggen, was dann passiert, Sie so etwas wie

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

Normalerweise tun kann, ist es besser, console.log statt alert zu verwenden, aber in diesem Fall alert kann besser sein, da sie die Ausführung stoppen, bis Sie klicken auf OK.

Die andere Möglichkeit besteht darin, in der Browser-Inspektor-Konsole auf die Option preserve log zu klicken. Um die Chrome-Konsole zu öffnen, können Sie Ctrl + Shift + J oder Cmd + Opt + J tun. Die anderen Browser haben ähnliche Konsolen, auf denen Sie die Protokolle von console.log sehen können. In der Regel können diese Probleme ohne externe Hilfe behoben werden.

Verwandte Themen