jQuery Mobile $ .mobile.changePage发布到页面

时间:2011-07-15 16:38:36

标签: javascript jquery mobile

我正在使用jQuery Mobile创建移动(显然)网站。我有一个根据AJAX请求动态创建的项目列表。这很好用!

接下来是这些列表项需要链接到另一个“页面”,这需要一个参数发送给它。

我正在使用的代码是:

$("#cwCountries [data-role='listview'] a").live("click", function() {
    var dataurl = $(this).data("url");
    if(dataurl != null) {
        $.mobile.changePage($("#cwCountrySpec"), {
            type: "post",
            data: dataurl
        });
    }
});

您可以按预期更改cwCountrySpec页面。如您所见,我正在使用$.mobile.changePage中的第二个参数来传递数据,我希望我已经存在的页面能够接收和使用。

我可以使用以下代码拦截对cwCountrySpec的更改:

$("#cwCountrySpec").live('pagebeforecreate', function(event) {
    console.log(event);
});

但是当我检查控制台时,data值将返回为undefined

这是可能的,如果是的话,怎么样?

修改 那真是太可惜了......

我刚刚查看了jQuery Mobile Methods文档,并说明了

  

仅在changePage()的“to”参数为URL时使用。

太糟糕了。那么我怎样才能在页面更改之间发送数据?

2 个答案:

答案 0 :(得分:1)

如何将'dataurl'值设置为全局变量,然后在'#cwCountrySpec'页面加载时获取该全局变量的值。

var tmp_data;
$("#cwCountries [data-role='listview'] a").live("click", function() {
    var dataurl = $(this).data("url");
    if(dataurl != null) {
        tmp_data = dataurl;
        $.mobile.changePage($("#cwCountrySpec"));
    }
});
$("#cwCountrySpec").live('pagebeforeshow', function() {
    console.log(tmp_data);
});

----编辑----

当您将信息加载到新页面时,您可以检查该页面是否为空,以便页面仅加载一次。

$("#cwCountrySpec").live('pagebeforeshow', function() {
    if ($("#cwCountrySpec div[data-role='content']").is(':empty')) {
        $("#cwCountrySpec div[data-role='content']").load(tmp_data);
    }
    console.log(tmp_data);
});

答案 1 :(得分:0)

这太可惜了......

我刚刚查看了jQuery Mobile Methods文档,并说明了

  

仅在changePage()的“to”参数为URL时使用。

太糟糕了。那么我怎样才能在页面更改之间发送数据?

编辑:与Sencha不同,开发人员似乎也不想将routes作为框架的一部分包含在内。