我正在使用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时使用。
太糟糕了。那么我怎样才能在页面更改之间发送数据?
答案 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
作为框架的一部分包含在内。