我正在使用jQuery Mobile编写PhoneGap应用程序,并试图获得iPhone应用程序中经常出现的效果:首次加载应用程序时(因为您尚未配置它),应用程序翻转并且您请参阅设置页面。
我让所有功能位按预期工作,但只有一个问题:我的设置页面的标题div不会显示。
<div data-role="page" id="settings" data-theme="c">
<div data-role="header" data-theme="a">
<h1>Settings</h1>
<a href="#home"
data-icon="check"
class="ui-btn-right"
data-transition="flip"
data-theme="a"
>Done</a>
</div>
<div data-role="content">
<!-- ... -->
这是翻到设置页面的代码:
$.mobile.changePage($("#settings"), { transition: 'flip' });
如果在应用加载并自动翻转到设置页面(标题不可见)后,我刷新页面,则会出现标题。当我手动翻转到设置页面时,它只会隐藏在这种情况下。例如,在主屏幕上,如果我点击设置按钮,它会翻转到设置页面并且标题不会被隐藏。
我也试过在标题div和它的子节点的css属性周围查看这两个用例之间是否有任何区别,但我找不到任何。
那么,现在呢?
更新:根据要求,这是第一次运行应用并切换到设置页面时检测到的代码:
onDeviceReady: function () {
analytics.trackStart();
//if no show has been selected, switch to settings page
if (this.getProperty('activeShowId') === null) {
var idFromCache = cache.getItem(this.getProperty('localStoragePrefix') + 'activeShowId');
if (idFromCache === null) {
//no show selected, show settings page
$.mobile.changePage($("#settings"), { transition: 'flip' });
return;
} else {
//select the corresponding show on the settings page
var radio = $("#settings input:radio[value=" + idFromCache + "]"),
label = radio.next();
radio.prop('checked', true);
label.attr('data-theme','e').addClass('ui-btn-up-e')
.removeClass('ui-radio-off').addClass('ui-radio-on')
.find(".ui-icon").removeClass('ui-icon-radio-off').addClass('ui-icon-shadow').addClass('ui-icon-radio-on');
var titleFromCache = cache.getItem(this.getProperty('localStoragePrefix') + 'activeShowTitle');
//TODO:
if (titleFromCache === null) {
pgalert('TODO: load show info when title isn\'t cached in localStorage');
}
this.setActiveShow(idFromCache, titleFromCache);
}
}
if (this.getProperty('userEmail') === null) {
var emailFromCache = cache.getItem(this.getProperty('localStoragePrefix') + 'userEmail');
if (emailFromCache === null) {
$.mobile.changePage($("#settings"), { transition: 'flip' });
return;
} else {
//fill in the email text field so it's already there if they go to the settings page
$("#settings #userEmail").val( emailFromCache );
}
}
if ( window && window.plugins && window.plugins.pushNotification && window.plugins.pushNotification.registerCallback ) {
window.plugins.pushNotification.registerCallback(
function () {
console.log('pn cb registered');
}
, this.error
);
}
}