我有这个使用PhoneGap,Onsen UI和AngularJS制作的移动应用程序。
我有一个index.html文件,其中具有以下页面结构:
index.html
- <ons-navigator var="myNavigator" page="login.html">
- <ons-template id="login.html">
- <ons-page ng-controller="LoginController" id="login">
- <ons-template id="main.html">
- <ons-page ng-controller="AppController" id="main">
- <ons-tabbar>
- <ons-tab active="true" page="upcoming.html">
- <ons-tab active="true" page="completed.html">
- <ons-tab active="true" page="settings.html">
- <ons-template id="upcoming.html">
- <ons-template id="completed.html">
- <ons-template id="settings.html">
login.html页面要求提供用户凭据,当用户单击“登录”时,这些凭据将存储在window.localStorage对象中。
下次加载该页面时,我希望该应用程序不导航到login.html页面(不显示它),而是检查localStorage中的凭据,并使用myNavigator推送到main.html页面,就像成功登录一样。
我有一个main.js文件,里面有两个控制器,在控制器定义之外,还有一个ons.ready函数,该函数在加载Onsen框架时触发。
ons.ready(function() {
var storage = window.localStorage;
if(credentials_found_in_localStorage)
myNavigator.pushPage('main.html');
}
});
此功能有效,但在pushPage发生之前,将显示login.html页面几秒钟(直到登录成功与否我才回来)
我如何才能使用已存储的凭据并跳过login.html页面,进行具有功能的自动登录?
处理此问题的最佳方法是什么?(也许是启动画面?)
您可以在没有指定页面(删除page="login.html"
属性)的情况下启动导航器,然后在所需的页面上加载ons.ready()
:
ons.ready(function() {
if(credentials_found_in_localStorage) {
nav.resetToPage('main.html');
} else {
nav.resetToPage('login.html');
}
});
在此处工作(更改的值isLogged
):http : //codepen.io/frankdiox/pen/eNmNoz
另一种可能的解决方案是删除您的ons-navigator
,因为我认为您仅将其用于日志记录目的,ons-modal
而是使用。为此,您必须将ons-tabbar
其作为主要元素(移除ons-template id="main.html"
包装纸)。该模式在里面你可以包括你的实际login.html
页面,只有做myModal.show()
对ons.ready
,如果用户没有登录。当他登录你只需要做的myModal.hide()
。如果您不希望在用户登录之前在选项卡中加载第一页,myTabbar.loadPage(...)
请在登录检查后使用。
希望能帮助到你!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句