【问题标题】:Browser does not detect changes in AngularJS浏览器没有检测到 AngularJS 的变化
【发布时间】:2015-10-09 14:23:14
【问题描述】:

我正在使用 IDE WebStorm 和 Safari 浏览器开发一个 AngularJS 应用程序。

到目前为止,一切都运行良好,但我最近将一些 HTLM 封装在我通过指令使用的模板中:

 .directive('referenceValue', [function ($scope) {
    return {
        restrict: 'E',
        templateUrl: "views/citizenprofile/reference/reference.html",
        controller: "referenceValueCtrl"
    }
}])

我以正常方式“调用”指令,没什么特别的 <reference-value></reference-value>

当我编辑reference.html 时,浏览器只检测到在第一次编辑时所做的更改。。如果我再次编辑 reference.html 并更新浏览器,则不会检测到更改。如果我重新启动浏览器,则会再次检测到更改。所以我基本上每次要调试HTML代码时都需要重新启动浏览器。 每次编辑时都会检测到控制器中的更改。

谁能告诉我如何解决这个错误?

【问题讨论】:

  • 打开浏览器控制台(F12) -> 点击右上角齿轮(设置) -> 勾选“禁用缓存(DevTools打开时)”。调试时让控制台保持打开状态。

标签: angularjs angularjs-directive angular-controller


【解决方案1】:

您的模板正在被缓存。有几个解决方法。在开发工具打开时使用 Chrome 的开发工具禁用缓存,或者在您的应用程序中使用 $templateCache.remove()

app.run(function($rootScope, $templateCache) {
   $rootScope.$on('$viewContentLoaded', function() {
      $templateCache.removeAll();
   });
});

查找有关删除模板缓存 here 的更多信息。

【讨论】:

  • 这是一个关于缓存的问题。当我删除缓存时,它再次起作用。谢谢你的提示。不幸的是,我使用的是 Safari,所以 $templateCache.removeAll();不起作用。
  • $templateCache.removeAll() 是特定于角度的,而不是特定于浏览器的。开发工具缓存禁用方法是特定于浏览器的,但 Safari 开发工具在Develop->Disable Cache 下也有一个禁用缓存的选项。希望对您有所帮助。
【解决方案2】:

如果您使用的是谷歌浏览器,请按 CTRL+SHIF+J 并在网络选项卡上选中“禁用缓存”

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多