2011-12-01 48 views
2

我正在開發一個使用jqm + phonegap的應用程序。假設我有兩頁,並在第二頁上我設置了一些參數(光,恢復等使用selectmenus)。在page1我有一個滑塊,當我移動滑塊時,它會調用函數timeCalculation()來計算時間並顯示在page1(當我移動滑塊時實時更改結果)。 現在,我想要的是假設我第一次設置頁面2上的所有參數並返回到page1並執行計算(正常工作)。現在,如果我更改page2上的某個參數,我希望滑塊自動刷新並顯示新結果(我仍然在page2上,所以當我回到page1時,我應該看到新的結果)。問題是我不能這樣做,只有當我點擊page1上的滑塊時,它纔會更新值。 所以,我不知道如何解決這個問題,我試圖調用timeCalculation()每次我改變頁面2上的一些參數。 現在,當我按下返回鍵在第2頁轉到到第一頁,我想觸發pagebeforeshow這樣在jqm + phonegap中發生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。我的應用程序掛起。請幫忙。

+0

這就是確切的編碼?缺少至少一個}}; – Flatlineato

+0

我同意@Flatlineato - 我們需要更多代碼才能看到問題 – Leon

+0

我上面編輯了我的問題。看看。 –

回答

1

簡單的答案:文檔的第一頁沒有pagebeforeshow。

我在我的'主頁'頁面上也遇到過pagebeforeshow問題,直到我意識到這個事件沒有爲文檔中的第一頁觸發。查看jQM文檔http://jquerymobile.com/demos/1.1.0/docs/api/events.html:pagechange方法觸發pagebeforeshow事件。該方法不適用於顯示的第一頁。

有一種變通方法,僅低於pagehide事件描述:

此外,對於初始頁面加載時要調用這些處理程序,您必須jQuery Mobile的執行之前將它們綁定。這可以在mobileinit處理程序中完成,如全局配置頁面中所述。