2012-10-06 80 views
1

如何使當我嘗試從一個頁面導航到另一個頁面(單頁面模板)時顯示JQM加載消息jquery mobile changepage在更改頁面時加載消息()

截止目前,我在changePage發生之前致電$.mobile.loading("show");

我試過thisthis中的方法,但它仍然不起作用。我只需點擊源頁面上的按鈕即可使用changePage。上述鏈接中提供的方法僅適用於FF。不適用於Android,iOS本機瀏覽器以及Chrome或Safari。

哦,而且我正在使用JQM v1.2.0 stable。

編輯: 繼承人使用

$(".listview").live("click", function() { 
    $.mobile.loading('show', { 
     text: 'Please wait... Loading...', 
     textVisible: true, 
     theme: 'a', 
     textonly: true 
    }); 
    var v1= $(this).attr("v1"); 
    //var CourseID = ""; 
    var v2= $(this).attr("v2"); 
    var v3= $.trim($(this).children("h3").text()); 
    var v4= $.trim($(this).find("span").children("span:first").text()); 
    var v5= $.trim($(this).children("p:last").text()); 
    $.ajax({ 
      async: false, 
      type: "POST", 
      url: "//url of the webmethod//", 
      data: "{v1:" + v1+ ", p:" + id + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      cache: false, 
      success: function (msg) { 
       ViewModel.variable1({ //binding data to ViewModel here// 
       }); 
       $.mobile.changePage("#course-pg", { transition: "none" }); 
      }, 
      error: function (msg) { 
       $("#errorpopup").popup('open'); 
      }, 
      complete: function() { 
       $.mobile.loading('hide'); 
      } 
     }); 
}); 
+0

這很奇怪,當你自動調用changePage()時會顯示加載消息...你有[頁面加載小部件設置](http://jquerymobile.com/demos/1.2.0/docs/pages /loader.html)設置是否正確? –

+0

@ZathrusWriter是的,我有。我已經將它添加到移動init中。js – krishgopinath

+0

和您的'mobileinit'在頁面上之前,您包括jQuery Mobile JavaScript文件? –

回答

1

我一直在琢磨永遠這樣,太代碼IM。

事情是,你可能會做所有事情,打電話給微調,打電話給changePage,...問題是(在我看來),微調只顯示while the page is loading而不是while the loaded page is rendering。假設你加載一個gzip頁面,它是2k,實際上加載得太快了,你甚至看不到微調。取決於正在加載的小部件,增強功能需要相當長的一段時間,因此您的微調器對於頁面加載的少數ms可見,但對頁面呈現的2-3 seconds不可見。

我用我自己的電話微調像這樣(JQM 1.1):

var spin = 
    function(what){ 
     if (what == "show"){ 
      console.log("SHOWIN"); 
      $.mobile.showPageLoadingMsg(); 
      } else { 
      console.log("HIDING"); 
      $.mobile.hidePageLoadingMsg() 
      } 
     }; 

將這個在你的代碼,並手動觸發它,你讓changePage呼叫前做:

spin("show"); 

,並在回調,或任何處理程序使用後,

spin("hide"); 

這應該給你一個想法,當S pinner節目以及它何時離開。

如果你想知道,我希望微調在渲染過程中會顯示。這會更有用,但我不確定這是可能的。

+0

好吧,我想你是對的,如果我們把連接變成wifi/3G/4G。任何想法爲什麼移動瀏覽器不能顯示它時,即時通訊舊的GPRS連接?裝載機出現不夠慢嗎? **一個關心的問題:** 這段代碼在'$(document).live(「ready」,function(){}'下。這可能是一個問題嗎? – krishgopinath

+1

這就像一個'雙號-no'。[Jquery Mobile](http://jquerymobile.com/test/docs/api/events.html)說,不要使用'$(doc).ready'和[Jquery](http:// api.jquery.com/live/)說不要使用'live'。 – frequent

+0

好吧,將它改爲pageinit。仍然沒有運氣:( – krishgopinath

0

我終於找到了解決這個問題的方法。它的字面上非正統的,我不知道爲什麼這是唯一的方法。無論如何,在這裏。我創建了一個定位標記,href設置爲第二頁,並使用css隱藏它。

<a href="#page-id" id="linktonext" style="display:none">Click here</a> 

我第一次有$.mobile.loading("show");和Ajax調用獲取數據後觸發點擊這個錨標記發生。在第二頁的pageinit上,我使用來自ajax調用的數據填充頁面。在此之後,我致電$.mobile.loading("hide")。完美的作品。