2016-04-13 2 views
2

Я пытаюсь реализовать простую функцию входа. Я хочу, чтобы DOM загружал другой элемент, основанный на том, существует ли сеанс $ window.sessionStorage.currentUserId5 или нет. Но условный оператор я добавил к .run() просто держит с помощью еще {} о

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

Контроллер

Пользователь нажимает кнопку, и это называется, $ 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

Я не хочу быть грубым, но я думаю, что вопрос не имеет отношения к пользовательскому интерфейсу Onsen. Несмотря на то, что вы используете его, я сомневаюсь, что использование пользовательского интерфейса Onsen меняет ваш реальный вопрос. (Если пользовательский интерфейс Onsen некорректно нарушает код.)

Возможно, что вы используете модуль ngStorage. Из того, что я видел, кажется, что обычный способ доступа к локальному и sessionStorage - это просто иметь их напрямую, а не через $ window.

Таким образом, вы можете попробовать просто потребовать $sessionStorage и использовать его напрямую. Если вы считаете, что проблема может быть связана с некоторой перезагрузкой браузера, как-то нарушая сеанс и т. Д., Вы можете попробовать $localStorage и посмотреть, работает ли он. Последняя вещь, которую вы могли бы попробовать, - это посмотреть, нормально ли работают localStorage и sessionStorage.

И если вы хотите отлаживать, что происходит, вы можете сделать что-то вроде

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

Другой вариант - щелкнуть опцию preserve log в консоли инспектора браузера. Чтобы открыть консоль хром, вы можете сделать Ctrl + Shift + J или Cmd + Opt + J. Другие браузеры также имеют аналогичные консоли, где вы можете видеть журналы с console.log. Обычно эти типы проблем можно отлаживать без необходимости внешней помощи.