我对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
,这是必要的我在测试过程中定期清理缓存。
提前致谢!
答案 0 :(得分:1)
如果我的手表设置得不够严格,我经常会在页面刷新时看到TypeErrors。你的追溯看起来与我得到的相似。
任何$ scope。$ watch行为将在watch注册时在页面加载时触发一次,除非你明确地禁止它。当您的手表试图调用函数,访问属性等时,可能会发生TypeError(暂时还不存在)(因为页面尚未完全加载)。然后错误消失,因为所有的对象/函数都被定义并使自己变直。
如果您的手表依赖于调用功能或访问可能尚未定义的属性,您可能希望通过简单地返回来取消手表,如果newVal和oldVal相等,就像手表注册时一样:
$scope.$watch("yourVariable", function(newValue, oldValue) {
if(newValue === oldValue){
return;
}
alert("$watch triggered!");
});