2

我在使用 Phonegap 和 jQuery Mobile 开发移动应用程序时遇到了问题。

每次显示页面之前,我都有一个要检查的输入条件,例如page A。如果条件为假,我将应用程序导航到另一个页面,例如page X。我使用页面事件做到了这一点pagebeforeshow

但我的问题是...

即使我使用了该pagebeforeshow事件,页面page A也会显示出来。IE; 显示page A一次,然后应用程序导航到page Xpage A如果条件错误,我不希望显示此内容。我的意思是,取消该页面显示事件并转到其他页面。

希望你有我问的。

为什么会这样?有没有其他方法可以让我完美地完成我的任务。

任何形式的帮助将不胜感激!:)

4

1 回答 1

1

在这种情况下不要使用pagebeforeshow事件,这是最后触发的页面事件之一。此时第二页已经创建并准备好显示。这必须在第二页即将创建之前完成。

首先看看我的另一篇文章,在那里你会发现从第一页到第二页的转换过程中的页面事件列表。或者可以在这里找到。

现在关于您的问题,这里有一个代码,您可以使用它来解决您的问题。它正在使用pagebeforechange事件(这是在页面转换期间触发的第一个事件):

$(document).on('pagebeforechange', function(e, data){  
    var to = data.toPage,
        from = data.options.fromPage;

    if (typeof to  === 'string') {
        var u = $.mobile.path.parseUrl(to);
        to = u.hash || '#' + u.pathname.substring(1);
        if (from) from = '#' + from.attr('id');

        if (from === '#index' && to === '#second') {
            alert('Can not transition from #index to #second!');
            e.preventDefault();
            e.stopPropagation();

            // remove active status on a button, if transition was triggered with a button
            $.mobile.activePage.find('.ui-btn-active').removeClass('ui-btn-active ui-focus ui-btn');;
        }  
    }
});

这是一个活生生的jsFiddle例子: http: //jsfiddle.net/Gajotres/3PhKZ/,您应该单击下一步按钮来触发页面更改。

于 2013-02-17T09:00:43.767 回答