我是JQM的新手(我使用1.4.5)而我的webapp(asp.net C#apache Cordova)仅包含许多单独的.cshtml页面(单页模板)。我正在使用Android 4.2.2在Samsung Galaxy Grand上测试我的webapp
一个。 即使在阅读了所有JQM文档之后,以及在阅读了关于将查询字符串值传递到另一个页面的许多帖子之后,我也不确定我对链接页面的理解。主要是因为我发现几乎所有的例子都是针对单个html页面内部页面(多页面模板)提供答案。
所以我请求你们中的一些JQM专家确认或纠正以下对我的理解......
从JQM文档我明白了
我可以在任何链接中使用(例如按钮),href =" page2.cshtml?par1 = 1& par2 = 2&#34 ;;并且JQM将自动使用Ajax使此链接起作用。
我也理解在相同域的不同html页面的情况下总是允许使用查询字符串,它将自动通过Ajax工作;只要at =例如rel =" external",data-ajax =" false"不在同一链接中使用。
但仅在内部页面(多页模板)的情况下不允许使用查询字符串....;
如果我需要使用上面的href链接到另一个域中的页面,例如www.anotherdomain.com/page2.cshtml?par1=1&par2=2,然后我需要使用rel =" external"。
以上所有观点(反映我的理解)是否正确? KIndly确认ro请纠正我......
B中。 在我的应用程序中,我发现大多数链接都是按照我上面的理解工作的,可以连接到同一个域中的不同页面;我认为这是通过Ajax发生的。这是对的吗?我也可以在第2页使用查询字符串参数(即To-Page)。
但在一个案例中,尽管它有效,但在To-Page中,Panel功能无法正常运行,除非我引入rel =" external'在href链接!我想这意味着它不再是AJAX了吗?此外,我无法找到原因..
进一步独立于上述主题,我面临另一个问题。加载时间(即显示To-Page所用的时间)会有所不同。
大多数情况下都没关系,但有时候装载圈会永远持续下去....我猜它已经崩溃了...... ???然后,如果我使用后退按钮返回并再次出现,很多时候会立即加载...... !!!!! 有什么想法或建议.....?
感谢期待...... 拉特纳
答案 0 :(得分:2)
在您担心如何将属性从一个页面传递到另一个页面之前,您需要了解多页面和多HTML模板之间的区别。
有关此主题的更多信息,请访问:Multipage template vs Multi HTML template in jQuery Mobile
现在让我们谈谈如何在jQuery Mobile页面之间正确传递数据。
如果您正在使用AJAX,您只需使用全局对象来存储所有数据。
这样的事情:
// Store object
var storeObject = {
parameter1: null,
parameter2 : null
}
再次,如果您使用的是AJAX,则不需要传递任何数据,因为所有数据都在DOM中。
// Store object
$(document).on('pagebeforeshow', '#second', function(e, data){
alert("My name is " + data.prevPage.find('#test-input').val());
});
无论您是否使用AJAX,此解决方案都将有效。
$(document).on('pagebeforeshow', '#index', function(){
$(document).on('click', '#change-page-button', function(){
// store some data
if(typeof(Storage)!=="undefined") {
localStorage.firstname="Dragan";
localStorage.lastname="Gaic";
}
// Change page
$.mobile.changePage("#second");
});
});
$(document).on('pagebeforeshow', '#second', function(){
alert('My name is ' + localStorage.firstname + ' ' + localStorage.lastname);
// Lets change localStorage data before we go to the next page
localStorage.firstname="NewFirstNeme";
localStorage.lastname="NewLastName";
});
$(document).on('pagebeforeshow', '#third', function(){
alert('My name is ' + localStorage.firstname + ' ' + localStorage.lastname);
});
通过changePage函数或通过href发送数据
// Send
$.mobile.changePage('page2.html', { dataUrl : "page2.html?paremeter=123", data : { 'paremeter' : '123' }, reloadPage : true, changeHash : true});
或
<a href="second.html?paremeter=123" data-role="button">Send parameter</a>
收到相同的数据:
$(document).on('pagebeforeshow', "#index", function (event, data) {
var parameters = $(this).data("url").split("?")[1];;
parameter = parameters.replace("parameter=","");
alert(parameter);
});
如果您需要有关此解决方案的更多信息,包括工作示例,请在此处找到它们:Passing data between jQuery Mobile pages
此处提到的几种方法在版本1.4中已弃用(仍可使用)。虽然您不需要担心,但1.5版本中几乎所有内容都将无法使用。这个新版本将从底部到顶部彻底改造jQuery Mobile。