2014-10-27 82 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