Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular js-清除缓存时的奇怪行为_Javascript_Angularjs_Caching_Local Storage - Fatal编程技术网

Javascript 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

我是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) 
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中发布的另一个原因是为了了解更多关于最佳实践的信息。谢谢。哦,错过了——有趣的是,一个不同的版本修复了它。角度版本似乎确实影响负载顺序/速度。我们刚刚升级到一个新版本,暴露了所有以前不相关的漏洞。