2014-10-27 84 views
-1

任何時候我對我的angularjs站點中的代碼進行更改時,它們都會生效,直到用戶單擊刷新按鈕。即使我註銷到一個不是角度的頁面,然後重新登錄它也是舊代碼,直到我單擊刷新按鈕。所以,如果有人登錄,它是一樣的,他們最後一次登錄,無論變化,我顯然不能指望他們每次登錄時點擊刷新。單擊刷新/重新加載代碼更改不會生效

所以我的問題是我怎麼能強制刷新的代碼。我不想使用window.reload或類似的東西,如果有一種特殊的角度來實現這一點。我試圖清除模板緩存,但它不起作用。這是我試過的:

.run(function($rootScope, $templateCache) { 
    $templateCache.removeAll(); 
    $rootScope.$on('$routeChangeStart', function(event, next, current) { 
     if (typeof(current) !== 'undefined'){ 
      $templateCache.remove(current.templateUrl); 
     } 
    }); 
}) 
+0

對不起@布賴恩,但是這是一個X/Y的問題。我認爲你的問題應該是:「爲什麼我的更改沒有被更新,除非我重新加載頁面?」因爲這是你真正的問題。 – Josep 2014-10-27 13:38:05

+0

爲什麼你不使用'$ location.path(「你想去的地方」);' – 2014-10-27 13:38:10

+0

有快樂嗎?現在你有答案,或者你只是想糾正我的標題? – Brian 2014-10-27 13:45:36

回答

1

我的問題變成了瀏覽器緩存js文件。我不認爲這會是問題,因爲在使用angularjs之前,我從來沒有遇到過這個問題。所以要解決這個問題,我發現這個:How to force browser to reload cached CSS/JS files?並修改它一點,所以我沒有必要使用所有的URL重寫。

我加入了PHP函數

function get_version($file){ 
    return filemtime($_SERVER['DOCUMENT_ROOT'] . $file); 
} 

於是,我聯繫我的劇本我用:

<script src="/path/to/script.js?<?php echo get_version('/path/to/script.js');?>"></script> 
+0

+1我很高興你找到解決方案! – Josep 2014-10-27 15:42:06