IBM Worklight - 多页面应用中的导航错误

时间:2014-01-11 12:25:34

标签: jquery-mobile ibm-mobilefirst

我正在使用jQuery Mobile在IBM worklight中开发混合应用程序。

我的应用程序文件夹结构如下:

  • carbikepooling.html(在jquerymobile app中创建的默认文件)
  • pages文件夹,包含文件:ownerProfile.html,passengerProfile.html,createPool.html
    此外,validateForm.js与carbikepooling.html,ownerProfile.js与ownerProfile.html,createPool.js与createPool.js
  • 相关联。

从carbikepooling.html,我将页面更改为置于pages文件夹中的ownerProfile.html: validationForm.js(与carbikepooling.html相关)

function redirectToProfile(profileId, profileType){
        if(profileId == null || profileId == ""){
            $("#failMessage").fadeIn();
        }
        else if(profileType == "Owner"){
            var dataurl = '?profileID='+profileId;
            $("#failMessage").fadeOut(200, function(){$("#loginSuccess").fadeIn(function(){$.mobile.changePage('pages/ownerProfile.html'+dataurl, {transition: "slide"});});});

        }
        else{
            var dataurl = '?profileID='+profileId;
            $("#failMessage").fadeOut(200, function(){$("#loginSuccess").fadeIn(function(){$.mobile.changePage('pages/passengerProfile.html'+dataurl, {transition: "slide"});});});

        }
    }

这很好用。

现在,我在ownerProfile.html文件中,从此文件中,当我将页面更改为createPool.html文件时,将其放置在同一页面文件夹中:

ownerProfile.js(与ownerProfile.html文件关联)

$(document).undelegate('#crtPool', 'click').delegate('#crtPool', 'click', function() {
            if(update1 == 1 && update2 == 1){
                var dataurl1 = '?profileID='+profileId+'&name='+userName;
                $.mobile.changePage('pages/createPool.html'+dataurl1, {transition: "slide"});
            }
            else{
                alert("Oops! You have not updated all of your information. To create pool, first update your info (click the settings icon on the right top)");
            }
        });

问题是这次没有加载createPool.html文件,因为为定位文件而创建的路径错误如下:

GET http://192.168.42.239:10080/CarBikePooling/apps/services/preview/CarBikePooling/common/0/default/pages/pages/createPool.html

正如您所看到的,URL中的pages被显示两次,我不明白为什么。

1 个答案:

答案 0 :(得分:0)

您没有在问题中指定app结构中的pages文件夹。

假设它是这样的:

apps\
--- yourApp\
------ android\
------ iphone\
------ common\
--------- css\
--------- js\
--------- my.html
------ pages\
--------- my1.html
--------- my2.html
--------- my3.html

我认为这是因为一旦你changePage来自主文件HTML apps\yourApp\common,你就在apps\yourApp\pages ...

因此,当您想要从pages\中的文件移至pages\中的另一个文件时,由于您已经在pages\,因此只需调用HTML文件即可。含义,

改变这个:

$.mobile.changePage('pages/createPool.html'+dataurl1, {transition: "slide"});

对此:

$.mobile.changePage('createPool.html'+dataurl1, {transition: "slide"});

或者,升级并返回,意思是:../pages/createPool.html