2

JQM에서 동적 페이지 생성기를 실행 중이며 올바르게 작동하도록 고심하고 있습니다. Jquery Mobile에서 동적 페이지로 올바르게 리디렉션하는 방법은 무엇입니까?

사용자가 링크를 클릭

, 나는이 같은 changePage 전화를 차단 :

, 새로운 페이지를 생성하고 초기화하고 그래서 같이 DOM에 추가 내 parsePage 방법, 호출
... 
    .on("pagebeforechange", function (e, data) { 
    if (typeof data.toPage === "string") { 
     init.parsePage(util.parseLink(data.toPage), true); 
     e.preventDefault(); 
    } 
    }) 

:

$(document).enhanceWithin(); 
    $.mobile.initializePage(); 
    // go to the new page 
    $.mobile.changePage("#" + config.id); 

내 문제는 e.preventDefault()를 사용하고 새로운 changePage 호출은 영원히 pagebeforechange 다시 청취자와 루프에 잡힐 것입니다. 또한 초기 changepage 호출을 막지 않고 단지 data.toPage 매개 변수를 수정하지 않으려 고했지만 내 페이지의 어셈블리가 너무 오래 걸리고 페이지가 어셈블 될 때까지 JQM을 지연시킬 방법이 없습니다.

는 질문 : 내 청취자 이상으로 "잡힌"되지 않는 새로운 전환을 트리거 할 방법
, 나는 JQM의 전환을 지연 어떻게 모든 준비 (약속 여기가 좋을 것입니다 때까지 -)

감사합니다.

+0

. 나는 URL 변수를 다루는 커스텀 방법을 만들기 위해 pagebeforechange 이벤트를 움켜 잡았다. 나는 이것을 꽤 독립적 인 플러그인으로 바꾸었지만, 이미 가지고있는 pagebeforechange 이벤트를 무효화 할 것이다. –

+0

내 자신의 "플러그인"처리가 있으므로 괜찮습니다. 제가 알고 싶습니다. 새로운 페이지를 생성하면 새로운 것을 트리거 할 것입니다. 그것에 JQM changepage. 그렇다면 어떻게 pagebeforechange 처리기가이 새로운 changepage 호출을 포착하지 못하게합니까? – frequent

+0

pagebeforechange가 해고 당할 수 있지만 처리기 내에서 다르게 작동하는 해시 이후 URL을 통해 무언가를 전달할 수 있습니다. –

답변

0

내 현재 작업 (만족할 수 없습니다) 솔루션 : 페이지가 DOM에있는 경우 내가 동적으로 페이지를 생성하고있어, 그것은이 DOM에 주입되기 때문에

// generate dynamic pages 
    .on("pagebeforechange", function (e, data) { 
    var page; 

    if (typeof data.toPage === "string") { 
     page = document.getElementById(data.toPage.replace("#","")); 

     if (page || data.toPage === $.mobile.getDocumentUrl()) { 
     return; 
     } 
     init.parsePage(util.parseLink(data.toPage), true); 
     e.preventDefault(); 
    } 
    }) 

그래서 내가 확인 해요 그것으로 changepaging하기 전에. 이 방법은 첫 번째 pagebeforechange에서 페이지가 존재하지 않으므로 생성되며 두 번째 턴에는 DOM에있게되므로 return입니다. 이와

문제 : 첫 번째 페이지로 돌아 간다

  • 항상 DOM의 페이지를 찾을 수 (정지 전환 말아야 때) 또는 첫 페이지 URL이 / 때 새로운 페이지를 생성 트리거 . data.toPage (예 : localhost/app /)과 $ .mobile.getDocumentUrl()을 비교하여 해결할 수 있습니다 (문서 URL - 항상로드하는 첫 번째 DOM에 머물러있어 documentUrl이므로 기억하십시오). 이렇게하면 첫 번째 페이지를 식별 할 수 있습니다.
  • pagebeforechange도 열리는 팝업에서 트리거되므로 전환을 트리거하지 않아야합니다. data.toPage 전체 URL되지 #foo 경우에는 어떻게 options.role
  • 점검?
  • 내가 JQM와 비슷한 일을했다