2013-01-04 86 views
1

經過很多google'ing和閱讀論壇,我還沒有找到合適的答案。jQuery Mobile Binding Spinner To ChangePage

到目前爲止,所有我所發現的是類似下面的東西:

  • 顯示加載消息
  • 呼叫改變頁面
  • 隱藏加載消息

這會工作,但我將不得不每次我調用加載/更改頁面(這是很多)時都要這樣做。

這會使我要麼做一箇中間人功能象下面這樣:

function customLoader(url){ 
    showLoader(); 
    $.mobile.changePage(url); 
    hideLoader(); 
} 

反正它綁定到改變頁面的事件嗎? 因此,它顯示了從第二changePage被稱爲卻隱藏着一旦changePage是了......

我知道上面的中間人方法的工作,但希望更多的東西整潔,更好實施,因爲有很多的HTML/js文件。

感謝

回答

3

事情是這樣的:

$('#index').live('pagebeforeshow',function(e,data){  
    $('#test-button').live('click', function(e) { 
     $.mobile.showPageLoadingMsg(true); 
     setTimeout(function() { 
      $.mobile.changePage('#second'); 
     }, 1000); 
    });  
}); 

$("#second").live('pageshow', function() { 
    $.mobile.hidePageLoadingMsg(); 
}); 

超時只有在這裏,所以你可以看到它的工作順利。這是一個很好的例子,所以過渡很快就被解僱了。在你的真實代碼中刪除它。

而且這裏有一個例子:http://jsfiddle.net/Gajotres/arrHd/

的每次改變頁面事件週期有活動時,一個頁面一個被過渡到一個頁面B.無論使用哪個動作觸發改變頁面,您可以始終存在的一個秩序當頁面B成功加載時禁用它。如果您想了解更多關於頁面加載順序的信息,請查看此鏈接:https://stackoverflow.com/a/14010308/1848600。在那裏你會發現很多關於jQM頁面動態的信息。

如果你想實現這個到每一頁過渡使用此:

$('[data-role="page"]').live('pageshow', function() { 
    $.mobile.hidePageLoadingMsg(); 
}); 

這將隱藏的AJAX加載程序(如果它是打開的)每一個不同的頁面加載成功和顯示的時間。

1

也許這對很多人來說太多了,但是我發現了一個與this question的評論不同的解決方案。

我使用jquery mobile router並在頁面的'show'事件中,我做的是$.mobile.loading("show");,所以當頁面出現時它會顯示加載微調框。

我使用JQuery的移動路由器了很多,但它解決了這個問題。

雖然隱藏旋轉,我不得不使用$('.ui-loader').hide();,這是不可思議的,我知道...

(也許只是聽正確的事件和觸發的微調也將工作,因爲這是JQMR不...)

我使用JQM 1.4.2 ...