2011-08-11 5 views
4

jQuery Mobile을 사용하여 webapp을 작성하여 localStorage에 레코드를로드하고 페이지가 처음에는 원격 JSON 파일에서 listview를 작성하는 함수를 호출합니다. 만든 (페이지에 live.pagecreate() 이벤트 사용). 이 함수의 시작 부분에 jQuery Mobile 메소드 $.mobile.showPageLoadingMsg()$.mobile.hidePageLoadingMsg()이 함수의 끝에 있습니다.jQuery Mobile showPageLoadingMsg()/hidePageLoadingMsg() 메소드가 초기 페이지에서 작동하지 않습니다. loadn

초기에 iOS 4.3 Safari, Chrome 13 및 Firefox 5가 설치된 iPhone 4에서 로딩 메시지가 표시되지 않습니다. 그러나 페이지에 새로 고침 단추가 있습니다. 이 버튼은 localStorage의 관련 레코드를 지우고 처음에는 listview를 채우는 데 사용 된 동일한 함수를 호출합니다. 그러나 새로 고침 버튼에서 동일한 기능을 호출하면 showPageLoadingMsg()hidePageLoadingMsg()이 모두 올바르게 작동하고로드 중 화면이 나타나고 사라집니다. 내가 여기서 뭔가를 놓치고 있니?

ETA 여기에 코드의 요지가 있습니다 (실제 코드 앞에 없으면 더 필요합니다 오늘 밤에 넣을 것입니다). 이 핸들러를 들어

function loadListView(){ 
    $.mobile.showPageLoadingMsg(); 
    //ajax call to pull JSON 
    //$.each loop to load localStorage and listview 
    $.listview.refresh('list'); 
    $.mobile.hidePageLoadingMsg(); 
} 

$(#listpage).live('pagecreate', function(event){ 
    loadListView(); // showPageLoadingMsg() and hidePageLoadingMsg do not work when the function is called here 
}); 

function clearList(){ 
    //for loop that clears each item in localStorage that matches the key prefix set in loadListView 
} 

//runs when refresh button is clicked 
$('listrefresh').live('click',function(){ 
    clearList(); 
    loadListView(); //showPageLoadingMsg() and hidePageLoadingMsg() work when the function is called here 
}); 
+0

질문을 편집하고 시도한 코드를 추가 할 수 있습니까? –

+0

@Phill 위의 일반 코드를 추가했습니다. 필요하다면 실제 코드를 나중에 추가 할 수 있습니다. – scottoliver

+0

그냥 지적하자면 .click을 사용하지 말고 사용해야합니다. $ ('listrefresh'). live ('click', function() {/ * 여기에 코드 * /}); jquery 모바일 베타 1을 사용하는 경우 1. 클릭 대신 vclick을 사용하십시오. – root

답변

1

초기 페이지 중 호출 될 : 나는 또한 (문서) .ready에 showPageLoadingMsg을 넣어 시도하지했고 mobileinit에 바인딩을 시도하고 어느 쪽도 일한 것을 언급해야한다 로드하기 전에 jQuery Mobile을 실행하기 전에 바인드해야합니다. 전역 설정 페이지에 설명 된대로을 mobileinit 처리기에서 수행 할 수 있습니다.

문서는 : 초기화가 발생한 후 페이지 트리거

초기화된다. 은 페이지가 직접로드되는지 여부 또는 콘텐츠가 Ajax 탐색 시스템의 일부로 다른 페이지로 가져온 경우에도 DOM ready() 대신이 이벤트에 바인딩하는 것이 좋습니다.

예 :

: 라이브 이벤트의 예 없음에서
  • http://jsfiddle.net/phillpafford/mKn8Y/8/
  • +0

    mobileinit에서 pageshow 이벤트를 사용하면 효과가 있습니다. 그러나 목록보기가로드되거나 다시로드 될 때 페이지 로딩 메시지 만 표시하면되므로 시간이 걸리는 부분입니다. 지금은 목록보기가 채워지더라도 페이지가 표시 될 때마다로드 메시지가로드됩니다. 이 문제를 해결하는 최선의 방법을 찾고 있습니다. – scottoliver

    관련 문제