jqm + phonegap中的pagebeforeshow事件的问题?

时间:2011-12-01 02:10:00

标签: jquery xcode4 jquery-mobile cordova

我正在使用jqm + phonegap开发一款应用。假设我有两个页面,在第二页上我设置了一些参数(光,恢复等使用选择菜单)。在页面1我有一个滑块,当我移动滑块时,它将调用函数timeCalculation()来计算时间并显示在page1(移动滑块时实时更改结果)。 现在,我想要的是第一次我在第2页上设置所有参数并返回到第1页并执行计算(工作正常)。现在,如果我更改第2页上的某个参数,我希望滑块自动刷新并显示新结果(我仍然在第2页,所以当我回到第1页时,我应该看到新的结果)。问题是我无法这样做,只有当我点击第1页上的滑块时,它才会更新值。 所以,我知道如何解决这个问题,我试图在每次更改第2页上的某个参数时调用timeCalculation()。  现在,当我按下第2页上的后退按钮转到第1页时,我想触发像这样的pagebeforeshow

$("#firstpage").live("pagebeforeshow", function (event, ui) { 
         alert("test");
             if(i!=null && e!=null && f!=null && o!=null && r!=null){

                 timeCalculation() //calling this function to calculate time.

             }});
 function timeCalculation(){
           // alert("inside");
            string=light;
            str=string.split(" ").join("");
            str1=selCom.split(" ").join("");
            str2=shade.split(" ").join("");
           // alert("test2");
            $.getJSON("appData.json",function(results){
                      i=results[str][dis];
                      r=results.Restoration[res];
                      o=results.Expertise[op];
                      f=results.Increment[inc];
                      lightColor=results[str].color;
                      compColor=results[str1].color;
                      e=results[str1][str2];
                      });


            finalResult=1000*(e/i)/(f*o*r);
            document.getElementById("result").value=finalResult.toFixed(2);


        }

现在,当我点击第2页的后退按钮时,提示(“测试”);语句已执行但它不会转到page1。我的应用程序挂了。请帮忙。

1 个答案:

答案 0 :(得分:1)

简单回答:文档中的第一页没有pagebeforeshow。

我的'home'页面上的pagebeforeshow也出现问题,直到我意识到此事件不会触发文档中的第一页。查看jQM文档http://jquerymobile.com/demos/1.1.0/docs/api/events.html:Pagebeforeshow事件由pagechange方法触发。该方法不适用于显示的第一页。

有一种解决方法,在pagehide事件的下方描述:

  

此外,要在初始页面加载期间调用这些处理程序,必须在jQuery Mobile执行之前绑定它们。这可以在mobileinit处理程序中完成,如全局配置页面中所述。