我正在尝试实现一个简单的登录功能。我想根据$ window.sessionStorage.currentUserId5会话是否存在,让DOM加载不同的元素。但是我添加到.run()的条件语句只是继续使用else {}语句
<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 :(得分:0)
我不想变得粗鲁,但我认为这个问题与Onsen UI并没有多大关系。即使你正在使用它,我怀疑Onsen UI的使用会改变你的实际问题。 (除非Onsen UI以某种方式破坏代码。)
您似乎使用的是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
会更好,因为它会停止执行,直到您点击确定。
另一个选项是单击浏览器检查器控制台中的preserve log
选项。要打开Chrome控制台,您可以执行Ctrl + Shift + J
或Cmd + Opt + J
。其他浏览器也有类似的控制台,您可以在其中查看来自console.log
的日志。通常可以在不需要外部帮助的情况下调试这些类型的问题。