2012-11-30 4 views
0

jquery 모바일 앱의 div에 외부 HTML을로드하고 있습니다. 모든 것은 잘 작동하지만 조금 더 부드럽게하려고 노력 중입니다. 무슨 일jQuery Mobile - 외부 HTML로드 중

$(document).bind('pagebeforecreate', function (event, ui) { 
    if (event.target.id == 'pageViewOrder') { 
     //get the page 
     $.getJSON(root_url + '/orders/view/' + window.viewOrderReference + '/?callback=?', null, function (d) { 
      $("#viewOrder_content").html(d.html).trigger("create"); 
      $.mobile.loading('hide'); 
     }); 
    } 

페이지 전에 아약스 호출 마무리로 표시되어 있습니다 :

여기 내 코드입니다. 이 호출이 완료되기 전에 jquery 모바일이 페이지를 표시하는 것을 중단하는 방법이 있습니까? 이 순간이 페이지를 보여줍니다 다음의 내용의 팝

편집 :.이 단일 페이지에로드

건배, 벤 디스플레이 공정이 간단 대한 중지

답변

0

, 당신은 단지 필요 event.preventDefault()으로 전화하십시오. 그런 다음 문제는 콘텐츠를 검색 한 후에 프로세스를 계속 진행할 수 있도록하는 것입니다. 실제로 수행 할 작업은 pagechange입니다. 데이터를 이미 검색했는지 확인한 다음 처리하지 않은 경우 데이터를 검색하고 다시 시작합니다. 그렇다면 계획대로 진행하십시오. 답장을

var contentRetrieved = false; //will indicate wether the JSON call has already been executed 
var contentToDisplay; //data from the JSON call 

$(document).live('pagebeforechange', function (event, data) { 
    if ((typeof data.toPage === "string") && ($.mobile.path.parseUrl(data.toPage).hash == '#pageViewOrder')) { 
     if (contentRetrieved) { 
      contentRetrieved = false; //content is already retrieved, we proceed with the pagechange 
     } else { 
      event.preventDefault(); //prevent further page change operations 
      $.getJSON(root_url + '/orders/view/' + window.viewOrderReference + '/?callback=?', null, function (d) { 
       contentToDisplay = {"html":d.html}; 
       contentRetrieved = true; 
       $.mobile.changePage("#pageViewOrder"); 
      }); 
     } 
    } 
}); 


$(document).bind('pagebeforecreate', function (event, ui) { 
    if (event.target.id == 'pageViewOrder') { 
     $("#viewOrder_content").html(contentToDisplay.html).trigger("create"); 
     $.mobile.loading('hide'); 
    } 
});​ 
+0

덕분에, 난 당신의 코드를 시도했지만 나는 다음과 같은 오류가 발생합니다 : 형식 오류 : contentToDisplay은 참으로 정의되지 않은 –

+0

, 고정 몇 가지 버그 – Romain

+0

같은 문제가 ... 내가 어떤 경고했다이며, 몇 가지 이유 , pagebeforecreate는 pagebeforechange ...보다 앞서 호출됩니다. hmmm –

관련 문제