2015-12-08 241 views
0

我有一個AngularJS模板,我嵌入儀表板。 使用PHP,我生成了一些代碼。我第一次訪問AngularJS模板中的頁面時,所有工作都非常棒。但是,第二次訪問該頁面時,我看到了舊的PHP代碼。在AngularJS中重新加載php頁面

AngularJS不會重新生成PHP代碼,每次訪問時都應該更改它。我怎麼能解決這個問題?

我需要我的PHP代碼來生成一個獨特的票據,以正確嵌入儀表板。

我試過這篇文章:AngularJs: Reload page但它不工作。

謝謝。

+0

你是什麼意思'訪問一個頁面'。我認爲這是關於改變意見不重新加載? –

+0

聽起來像是一個緩存問題。 AngularJS無法控制您的PHP腳本。 – jperezov

+0

你可能會緩存你的模板。如果您有一個由PHP重新生成的完整模板,那麼最好在$ http請求獲得模板後將模板注入佔位符。如果它只是一個唯一標識符字符串,您可以使用$ http請求獲取唯一標籤。 https://docs.angularjs.org/api/ng/service/$templateCache或禁用模板緩存http://opensourcesoftwareandme.blogspot.in/2014/02/safely-prevent-template-caching-in-angularjs.html – Gary

回答

1

AngularJS的工作方式與您的思維方式不同。給你的頭一個動搖,並準備思考有點不同。

在AngularJS應用程序中,顯示的HTML或DOM(標籤和業務數據的混合)在客戶端(瀏覽器)生成。 不應該使用PHP生成服務器端,因爲您正在嘗試執行

AngularJS根據您的AngularJS代碼/指令和數據創建顯示的HTML客戶端。您的代碼/說明包括Javascript和AngularJS模板。模板不應包含業務數據,而只應包含數據放置位置以創建顯示的HTML(或DOM)的說明。這些指令是ng-bind,{{var}},ng-repeat等。

就像它不會從服務器反覆檢索您的Javascript代碼/指令一樣,AngularJS不會從您的模板代碼/指令中反覆檢索服務器。它獲取一次,將其緩存到本地,並在需要重新顯示該頁面時重新使用它。

你的AngularJS模板真的應該是靜態* .html文件,就像你的.js(和.css)是靜態文件一樣。只有在一些非常奇怪的需求下,你才需要用PHP動態生成AngularJS模板。 (現在,要獲取模板所需的業務數據,請使用AngularJS的$ http服務,這會調用您的PHP服務器端,您的PHP代碼只返回包裝在JSON中的數據...而不是用HTML包裝)。

+0

這是真的。尼斯點BNCoder。你可能想從php生成的代碼轉移到基於RESTAPI的代碼。 – Gary

+0

感謝您的解釋,這真的清除了我的想法。我用 – Merl