2015-06-18 36 views
0

目前,我有一個頁面的應用程序,使用句柄模板。它有一個由該頁面的特定類控制的搜索功能,該頁面是/#page/1,然後當您單擊搜索結果時,它會將您帶到另一個頁面,該頁面由一個名爲/#的單獨外部類控制。參展商/ 432(參展商編號是最後的編號)。PhoneGap如何刷新/重新加載頁面使用一個頁面的應用程序

當我點擊返回時,PhoneGap會在iOS/Safari中加載搜索頁面(#頁面/ 1),除非我使用location.reload()重新加載整個HTML頁面,該應用程序將緩存搜索首先進入,它不會需要新的輸入。

我試圖使用location.hash向散列末尾添加一個隨機字符串,但只有在點擊後退按鈕時使用location.reload()重新加載整個HTML頁面時,它纔會起作用。

Android/Chrome沒有問題。

有關如何重新加載HTML並重新載入#頁/ 1頁的搜索頁面的任何反饋,我將不勝感激。我已經嘗試使用location.href = url /#page/1,但它會加載沒有任何動態數據的頁面。

+0

你有沒有考慮過使用[backbone.js](http://backbonejs.org/)?如果沒有,我強烈建議你看看它,尤其是[Router](http://backbonejs.org/#Router)。它會幫助你解決這個問題,並且它會以非常簡潔的方式來完成。乾杯。 – Alp

+0

這很有幫助。謝謝你,我會考慮實施這個。 –

回答

0

關於這個主題的更多思考:

1)憑經驗是避免重新加載整個HTML頁面。那麼我們怎麼能做到這一點?在你的HTML頁面中,你應該有一個特定的DIV,你可以在你認爲合適的情況下操作。例如,在/#頁面/ 1上,您應該設置該頁面的內容,無論頁面/ 1應該做什麼以及用戶何時點擊搜索,那麼搜索內容都應顯示在該字段中。 (請注意,我正在討論UI方面的事情,實際的搜索可以通過其他一些服務來完成,並且您可以從您的頁面對該服務進行AJAX調用)。 2)您將會收聽各種事件(例如/#頁面/ 1,用戶點擊搜索按鈕,服務器返回搜索結果或服務器返回錯誤消息等)。取決於發生了什麼,您應該相應地修飾該DIV。

示例HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
    <meta name="format-detection" content="telephone=no"/> 
    <meta name="viewport" 
      content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"/> 

    <title>Example</title> 


</head> 
<body> 
<div id="jQUi"> 
    <div id="content"> 
    </div> 
</div> 

</body> 
</html> 

在上面HTML,我與ID爲 「內容」 股利玩。這是如何:

document.addEventListener("deviceready", letGetGoing, false); 

... 

function letsGetGoing(){ 
    $('content').html(useTemplateNamed('page1Template')); 
    $('.search').on('change', switchToSearch); 
} 

function switchToSearch(){ 
    $('content').html(useTemplateNamed('search')); 
    $('.submit').on('change', verifyAndSendToServer); 
} 
... 

上面是一個僞代碼。我寫了它只是爲了給你一個想法。

我希望它有幫助。

相關問題