Javascript Angular js-清除缓存时的奇怪行为
我是Angular.js的新手,每次清除缓存时都会遇到一个错误。在正常情况下,我的应用程序运行时不会产生任何控制台错误;但是,如果清除缓存,则在第一页刷新时总是会出现以下错误:Javascript Angular js-清除缓存时的奇怪行为,javascript,angularjs,caching,local-storage,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://nakedisla
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)
TypeError:对象不是函数
在f(http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:37:378)
每小时$eval(http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:112:316)
h.$digest(http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:109:392)
在h.$delegate.\uuuuuuuuuuuu.$digest(:844:31)
在h.$apply(http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:113:100)
在h.$delegate.\uuuu proto.$apply(:855:30)
在http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:18:243
在Object.e[作为调用](http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:35:202)
在d(http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:18:151)
在ic(http://nakedisland.dev/lib/angular/angular-1.3.0-beta.7/angular.min.js:18:360)
由于这些都是angular.min.js文件本身的内部错误,因此很难将任何东西追溯到我自己的代码,并且由于我有几个工厂服务,它们从localStorage
读取和写入,因此在测试过程中我有必要定期清除缓存
- 这个错误是什么意思?它列出了几行遇到错误的代码,但由于代码被缩小,很难说出哪个对象不是函数
- 我错过什么了吗?或者做错事?(我知道如果不从我的应用程序中发布大量代码,可能很难回答这个问题,但应用程序代码非常非常大。)
- 由于该错误仅在缓存清除后产生(即不是从新浏览器首次加载时),我是否应该担心该错误
提前谢谢 如果我的手表设置得不够严格,我经常会在刷新页面时出现打字错误。你的追踪和我得到的很相似
任何$scope.$watch行为都将在监视注册时在页面加载时触发一次,除非您显式抑制该行为。当您的手表试图调用一个函数、访问一个暂时不存在的属性等(因为页面还没有完全加载)时,可能会发生TypeError。然后,当所有对象/函数都被定义并理顺时,错误就会消失
如果您的手表依赖于调用函数或访问可能尚未定义的属性,您可能希望通过简单地返回newVal和oldVal是否相等来抑制手表,就像手表注册时一样:
$scope.$watch("yourVariable", function(newValue, oldValue) {
if(newValue === oldValue){
return;
}
alert("$watch triggered!");
});
如果希望能够按行调试,请不要使用缩小的库。另外,您使用的是测试版,所以我确信其中有一些bugform@Ian-啊,是的,切换回稳定的角度后,误差消失了。怀疑可能是这样的。Ian的建议确实纠正了我所遇到的具体错误,但我在stack中发布的另一个原因是为了了解更多关于最佳实践的信息。谢谢。哦,错过了——有趣的是,一个不同的版本修复了它。角度版本似乎确实影响负载顺序/速度。我们刚刚升级到一个新版本,暴露了所有以前不相关的漏洞。