2014-06-12 87 views
0

我發現jQuery手機並未重新使用加載的頁面。jQuery Mobile DOM頁面重用

$(document).on("pagecontainershow", function() { 
    var activePage = $.mobile.pageContainer.pagecontainer("getActivePage"); 
    if (activePage.hasClass("search-page")) { 

     var controller = activePage.data("controller"); 

     if (!controller) { 

      controller = new SearchController(activePage); 
      activePage.data("controller", controller); 
     } 

     controller.loadPage(); 
    } 
}); 

再後來...

$.mobile.pageContainer.pagecontainer("change", "search.html"); 

是包含

<div data-role="page" class="search-page"> 

然而HTML文檔中,在每個導航到search.html,activatePage.data( 「控制器」 )是空的,所以我重新初始化我的SearchController。

我以爲jQuery手機重用頁面已經加載到DOM?

+0

如果你想保存在dom中,可以在search.html頁面div中加入'data-dom-cache =「true」'。一旦隱藏,外部頁面將被刪除,而不會被緩存。 – Omar

+0

什麼是外部網頁? – Jeff

+0

任何通過Ajax加載的頁面,例如Search.html是一個外部頁面。 – Omar

回答

3

jQuery Mobile使用兩種截然不同的頁面模板解決方案。

  • 多opage - 其中每一頁是一個HTML文件
  • 多HTML的一部分 - 如果單頁當然是搭配的一個HTML文件的一部分

你可以那些模板。

當jQuery Mobile初次初始化時,初始HTML文件被完全加載到DOM中。這個內容將保留在DOM中,直到頁面刷新(或者你強行刪除它是一個糟糕的決定)。

每個其他的HTML頁面在你轉換到它時都會被加載,並且一旦你轉換到HTML頁面就會被刪除。基本上它只要活躍就能在DOM中保持活力。

因此,只需簡單地說,只有在初始HTML文件中找到的頁面纔會永久保留在DOM中,其他所有內容都會在您激活時加載/刪除。