2013-05-16 65 views
2
options.dataUrl = urlObj.href; 
$.mobile.changePage($page, options); 

dataUrl包含參數jQuery Mobile的,如何使用changePage更新changeHash和參數

http://example.com/#sales?p=page 

,但上面的代碼僅更新只用哈希的URL,新的頁面加載後的完整網址。 ..網址更改爲

http://example.com/#sales 

並不適用?p = page。

下面是完整的功能,檢查最後幾行....

function getSPList(urlObj, options){ 
var pageName = urlObj.hash.replace(/.*p=/, ""), 
pageSelector = urlObj.hash.replace(/\?.*$/, ""); 

$.ajax({ 
    url:"getSPList.php", 
    dataType: 'json', 
    data: {p: pageName}, 
    success:function(result){ 
     if (result) { 
      var $page = $(pageSelector), 
       $header = $page.children(":jqmData(role=header)"), 
       $content = $page.children(":jqmData(role=content)"), 
       markup = "<ul data-role='listview' data-filter='true' data-filter-placeholder='Search Salesperson...'>"; 

      for (var i = 0; i < result.sp.length; i++) { 
       markup += "<li><a href='#addClient?p="+ result.sp[i].id +"' data-transition='slide'>" + result.sp[i].name + "</a></li>"; 
      } 
      markup += "</ul>"; 

      $content.html(markup); 
      $page.page(); 

      $content.find(":jqmData(role=listview)").listview(); 

      options.dataUrl = urlObj.href; 
      options.changeHash = true; 

      $.mobile.changePage($page, options); 
     }   
    } 
}); 

return 
} 
+0

你是指在頁面之間傳遞參數?如果'dataUrl'包含'#sales?p = page',它將顯示所有內容,而不僅僅是'#sales'。 – Omar

+0

不,只是希望地址欄在加載新頁面後顯示帶有參數的完整url。 –

+0

它應該能夠正常工作'$ .mobile.changePage(page,{changeHash:true,dataUrl:urlObj.href});'你上面的例子使用'options'不起作用。 – Omar

回答

2

我經歷過同樣的問題,這裏是我發現的1.3.2版本:

$.mobile.changePage(toPage, options)options.dataUrl在存儲和使用前通過path.convertUrlToDataUrl()

Inside path.convertUrlToDataUrl()之前的所有內容,包括'#'以及包括'?'在內的所有內容。被剝離。

$.mobile.changePage()內再往下的URL傳遞給$.mobile.navigate()之前,我看到這一點:

// rebuilding the hash here since we loose it earlier on 
// TODO preserve the originally passed in path 
if(!path.isPath(url) && url.indexOf("#") < 0) { 
    url = "#" + url; 
} 

所以它似乎是在JQM的錯誤。對於我的應用程序,我前面提到的if語句的內底部添加此:

var query_index = (settings.dataUrl || '').indexOf('?'); 
if (query_index > -1) { 
    url += settings.dataUrl.substring(query_index); 
} 

這解決了最初的問題,但我不能確定潛在的負面影響,或者有更好的解決辦法在那裏。

+0

嗨喬希,謝謝你的評論。我已經完成了該項目,一旦我有機會開展工作,我會更新或標記您的答案。謝謝。 –

+0

嗨 - 我有同樣的問題和上述代碼的作品。 –