我正在使用带有PhoneGap的jQuery mobile,并希望在第一次使用该应用时显示登录页面,并在后续加载时显示索引页。
我目前的解决方案是在deviceready上使用以下内容
if(!localStorage.registered){
$.mobile.changePage( "#login", { transition: "none"} );
}
但是,我的问题是您仍然看到页面转换。我希望登录页面成为第一个可见的页面。
有什么建议吗?谢谢!
答案 0 :(得分:3)
这个Q已经有几个月了,它仍然没有答案,我没有任何手机缺口的经验,但我做jQM,所以我认为这可能会有所帮助。
我目前通过延迟jQM的自动初始化在我的应用上采用了这个解决方案。 这是一个如何基于我的应用程序如何做到这一点的示例。
(function() {
#stop jQM from auto initialising
$(document).on("mobileinit",function() {
$.mobile.autoInitializePage = false;
});
var my_app = new MyApp();
# custom afterinit event is triggered on the app instance
$(my_app).on('afterinit',function() {
var initial = 'login';
if(localStorage.registered) {
initial = 'home';
}
# set the page hash to our start page
window.location.hash = initial;
#initialise jQM
$.mobile.initializePage();
});
})();
确保你保护决定是否允许登录的东西,在我的应用程序中,我有一个数据结构,应用程序需要ajax到MyApp.appdata
它只有在登录实际成功时才会存在。< / p>
答案 1 :(得分:1)
另一种解决方案可能是拥有代理页面。 我在另一个应用程序中使用的另一种方法。
初始“加载”步骤,它只是一个虚拟页面。 在您的文档中创建一个页面作为第一页,例如
<div id="loading" data-role="page">Loading</div>
在mobileinit步骤中绑定到pageshow事件。
$(document).on("mobileinit",function() {
$('#loading').on('pageshow',function() {
# ...
# do login check here
# ...
var initial = 'login';
if(localStorage.registered) {
initial = 'home';
}
# change to our initial page
$.mobile.changePage(initial);
});
});
答案 2 :(得分:0)
如何隐藏#registration和#login然后执行:
if(localStorage.registered){
$('#login').show();
} else {
$('#registration').show();
}