手动调用(jQueryMobile)$ .mobile.changePage后,标题div不可见

时间:2012-03-20 21:08:47

标签: jquery-mobile

我正在使用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
        );
    }
}

0 个答案:

没有答案