Angular js - 清除缓存时的奇怪行为

时间:2014-05-21 21:41:24

标签: javascript angularjs caching local-storage

我对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,这是必要的我在测试过程中定期清理缓存。

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

任何$ scope。$ watch行为将在watch注册时在页面加载时触发一次,除非你明确地禁止它。当您的手表试图调用函数,访问属性等时,可能会发生TypeError(暂时还不存在)(因为页面尚未完全加载)。然后错误消失,因为所有的对象/函数都被定义并使自己变直。

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

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