使用$ .mobile.changePage并传递数据

时间:2010-12-21 15:12:19

标签: jquery methods jquery-mobile

我正在努力学习自己的jQuery Mobile。我觉得这很酷,但是我被困在了什么东西。如果我想这样称呼:

$j.mobile.changePage({ url: $j("#News"), data: "apple=banana", type: "GET"}, "slide", true, true);

它似乎不起作用。我真的不知道用jQuery传递数据,所以可能我做错了。

亲切的问候,Senne

编辑:抱歉,把错误的代码放在那里......

3 个答案:

答案 0 :(得分:1)

据我所知 - url必须是真实的网址是另一个div[data-role=page]

的ID

澄清:

提供ID会显示当前文档中可用的另一个div(您可以创建包含多个页面的html文件)。

另外 - jquerymobile只加载一次页面,并将其添加到文档中供以后参考。稍后将不会触发服务器端操作。 (我不确定它如何使用提供的数据处理调用)

答案 1 :(得分:1)

基于反复试验,这就是我看到的情况:

  • $。mobile.changePage ('#'+ id,filter,false,true)刷新当前视图但不在服务器上执行请求
  • $ .mobile.changePage ({url:'#'+ id,data:'code = apple = banana',type:'GET'},'slide',false,true)不会刷新当前视图,但会在服务器上执行请求
  • $ .mobile.changePage ({url:'http://localhost/SomeOtherPage.aspx',data:'code = apple = banana',type:'GET'},'slide ',false,true)刷新当前视图并在服务器上执行请求

因此,在服务器上执行时,基本URL似乎必须不同才能更新当前视图。

答案 2 :(得分:0)

我遇到了一个场景,我需要在项目上捕捉点击事件并显示一个加载的页面(相同的html文件),其中包含已点击项目的详细信息。我找到的解决方案半依赖于一些事情,但是:

  • 您的.js方案应该包含在至少一个“命名空间”或全局对象的属性中,以防止写入对全局对象重要的任何内容或被外部代码写入。
  • 您的数据必须已存在于.js对象中,或者可通过其他方式访问。

将tap事件附加到导致页面转换的元素(甚至是导致页面转换有问题的函数)允许您创建如下函数:

function PageTransitionHandle(oEvent)
{
   // Set your stored data to a global object
   oYourNamespace.DataObject = oDataObject;

   // not necissary if already linked to other page but useful when attaching to
   // an image  or other element
   $.mobile.changePage("#otherPageId");
}

并在下一页的pageshow事件中:

function PageInit()
{
   var oPageData = oYourNamespace.DataObject;
   // Handle using data from here (i.e calling webmethod using parameters 
   // or setting data according to object)
}

由于使用了ajax加载方法,这可能适用于外部页面和内部页面,但我还没有测试过。这对于传递参数甚至整个数据对象以定义其他场,或者让用户信息跟随它们,实际上是非常有用。

要看的另一条路线是Local Storage,但我还没有亲自看过这个