【问题标题】:Angular js - Strange behaviour when clearing cacheAngular js - 清除缓存时的奇怪行为
【发布时间】:2014-07-10 18:03:19
【问题描述】:

我对 Angular.js 比较陌生,我想知道每次我清除缓存时都会遇到一个错误。在正常情况下,我的应用程序运行时不会产生任何控制台错误;但是,如果我清除缓存,我总是在第一页刷新时收到以下错误:

    TypeError: object is not a function
    at f (http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:37:378)
    at h.$eval (http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:112:316)
    at h.$digest (http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:109:392)
    at h.$delegate.__proto__.$digest (<anonymous>:844:31)
    at h.$apply (http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:113:100)
    at h.$delegate.__proto__.$apply (<anonymous>:855:30)
    at http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:18:243
    at Object.e [as invoke] (http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:35:202)
    at d (http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:18:151)
    at ic (http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:18:360) 

由于这些都是 angular.min.js 文件本身的内部错误,因此很难追溯到我自己的代码,而且由于我有几个工厂服务可以读取和写入 localStorage,因此我有必要在测试过程中定期清除我的缓存。

  • 这个错误是什么意思?它列出了遇到错误的几行,但由于代码被缩小,很难说哪个对象不是函数。
  • 我错过了什么吗?或者做错了什么? (我知道如果不从我的应用中发布大量代码,可能很难回答这个问题,但应用代码非常非常大。)
  • 由于该错误仅在缓存清除后产生(即不是在从新浏览器初始加载时),我是否应该担心这个错误?

提前致谢!

【问题讨论】:

  • 如果您希望能够逐行调试,请不要使用缩小的库。另外,您使用的是测试版,所以我确定存在某种形式的错误
  • @Ian - 是的,在切换回 Angular 的稳定版本后,错误消失了。

标签: javascript angularjs caching local-storage


【解决方案1】:

如果我的手表设置不够严格,我经常在页面刷新时遇到 TypeErrors。您的回溯看起来与我得到的相似。

任何 $scope.$watch 行为都会在 watch 注册时在页面加载时触发一次,除非您明确禁止它。当您的手表尝试调用暂时不存在的函数、访问属性等时(因为页面尚未完全加载),可能会发生 TypeError。随着所有对象/函数都被定义并理顺,错误就会消失。

如果您的手表依赖于调用函数或访问可能尚未定义的属性,您可能希望通过简单地在 newVal 和 oldVal 相等时返回来抑制手表,就像手表注册时一样:

$scope.$watch("yourVariable", function(newValue, oldValue) {
  if(newValue === oldValue){
    return;
  }
  alert("$watch triggered!");
});

【讨论】:

  • 怀疑可能是这样的。 Ian 的建议确实纠正了我遇到的具体错误,但我在堆栈中发布的另一个原因是为了了解有关最佳实践的更多信息。谢谢。
  • 糟糕,错过了——有趣的是,另一个版本修复了它。 Angular 版本似乎确实会影响加载顺序/速度。我们刚刚升级到新版本,并暴露了以前不相关的各种漏洞。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
相关资源
最近更新 更多