Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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
Angularjs 角度js'';在ng中,src导致无限循环_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 角度js'';在ng中,src导致无限循环

Angularjs 角度js'';在ng中,src导致无限循环,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我试图找到一种方法来解决IE在使用AngularJS时从缓存中获取图像的问题 我有以下代码 <img ng-src="./individuals/image/{{team._id}}/{{member._id}}{{getRandom()}}" > 当我运行时,我得到这个错误 Error: 10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [["fn: functi

我试图找到一种方法来解决IE在使用AngularJS时从缓存中获取图像的问题

我有以下代码

<img ng-src="./individuals/image/{{team._id}}/{{member._id}}{{getRandom()}}" >
当我运行时,我得到这个错误

Error: 10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [["fn: function (a){\n\"use strict\";\ntry{for(var b=0,c=q,g;b<c;b++){if(typeof(g=l[b])==\"function\")g=g(a),g==null||g==s?g=\"\":typeof g!=\"string\"&&(g=da(g));B[b]=g}return B.join(\"\")}catch(f){d(Error(\"Error while interpolating: \"+e+\"\\n\"+f.toString()))}}; newVal: \"./individuals/image/51c209ead8b8d863ad69de97/51c209ead8b8d863ad69de65?ran=1371757784485\"; oldVal: \"./individuals/image/51c209ead8b8d863ad69de97/51c209ead8b8d863ad69de65?ran=1371757784457\"","fn: function (a){\n\"use strict\";\ntry{for(var b=0,c=q,g;b<c;b++){if(typeof(g=l[b])==\"function\")g=g(a),g==null||g==s?g=\"\":typeof g!=\"string\"&&(g=da(g));B[b]=g}return B.join(\"\")}catch(f){d(Error(\"Error while interpolating: \"+e+\"\\n\"+f.toString()))}}; newVal: \"./individuals/image/51c209ead8b8d863ad69de97/51c209ead8b8d863ad69dec9?ran=1371757784487\"; oldVal: \"./individuals/image/51c209ead8b8d863ad69de97/51c209ead8b8d863ad69dec9?ran=1371757784459\"","fn: function (a){\n\"use strict\";\ntry{for(var b=0,c=q,g;b<c;b++){if(typeof(g=l[b])==\"function\")g=g(a),g==null||g==s?g=\"\":typeof g!=\"string\"&&(g=da(g));B[b]=g}return B.join(\"\")}catch(f){d(Error(\"Error while interpolating: \"+e+\"\\n\"+f.toString()))}}; newVal: \"./individuals/image/51c209ead8b8d863ad6

我认为问题在于getRandom函数每次调用时都返回不同的值。 下面是发生的情况:

  • 调用你的函数
  • 获取值
  • 看,它与前面的值不同
  • 将循环标记为脏循环
  • 循环完成后,它会重新运行循环,从而获得一个新值
  • 其想法是让getRandom在一段时间内给出谨慎的值。 例如,只要您认为合适,只需每隔1、10、30秒给出一个新值

    实际上,这个建议适用于很多事情。Angular不保证它将调用绑定中的函数的次数。因此,您需要使它们快速运行,还需要确保对于相同的输入,它们返回相同的输出(大多数情况下,尽管在这种情况下可能是合理的)

    还可以考虑图像的时间/如何变化,如果实际变化可以由其他事物触发,只考虑在触发实际变化时创建一个新的结果值(EX:用户上传一个新的配置文件图像,一个定时器执行,等等)


    更新:无法使用Chrome复制它

    您使用的是哪个版本的IE?这至少在IE8+中有效-我在IE9和Firefox中尝试过。这两种情况下都不起作用。小提琴有绝对的url。。我不知道问题是否是因为我使用带有“/”的url,不幸的是,这不是问题所在。你能发布一个演示重现这个问题吗?我没有一个可以从互联网访问的托管环境。。我们可以将图像上传到JSFIDLE吗?不,您可能需要将图像上传到其他地方并使用绝对路径。哇!!成功了,。。getRandom()就是问题所在。我已经用有效的更改更新了帖子
    Error: 10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [["fn: function (a){\n\"use strict\";\ntry{for(var b=0,c=q,g;b<c;b++){if(typeof(g=l[b])==\"function\")g=g(a),g==null||g==s?g=\"\":typeof g!=\"string\"&&(g=da(g));B[b]=g}return B.join(\"\")}catch(f){d(Error(\"Error while interpolating: \"+e+\"\\n\"+f.toString()))}}; newVal: \"./individuals/image/51c209ead8b8d863ad69de97/51c209ead8b8d863ad69de65?ran=1371757784485\"; oldVal: \"./individuals/image/51c209ead8b8d863ad69de97/51c209ead8b8d863ad69de65?ran=1371757784457\"","fn: function (a){\n\"use strict\";\ntry{for(var b=0,c=q,g;b<c;b++){if(typeof(g=l[b])==\"function\")g=g(a),g==null||g==s?g=\"\":typeof g!=\"string\"&&(g=da(g));B[b]=g}return B.join(\"\")}catch(f){d(Error(\"Error while interpolating: \"+e+\"\\n\"+f.toString()))}}; newVal: \"./individuals/image/51c209ead8b8d863ad69de97/51c209ead8b8d863ad69dec9?ran=1371757784487\"; oldVal: \"./individuals/image/51c209ead8b8d863ad69de97/51c209ead8b8d863ad69dec9?ran=1371757784459\"","fn: function (a){\n\"use strict\";\ntry{for(var b=0,c=q,g;b<c;b++){if(typeof(g=l[b])==\"function\")g=g(a),g==null||g==s?g=\"\":typeof g!=\"string\"&&(g=da(g));B[b]=g}return B.join(\"\")}catch(f){d(Error(\"Error while interpolating: \"+e+\"\\n\"+f.toString()))}}; newVal: \"./individuals/image/51c209ead8b8d863ad6
    
    $scope.lastMillis = new Date().getTime();
        $scope.getRandom=function(){
            var curMillis = new Date().getTime();
            if (curMillis-$scope.lastMillis>5000) {
                $scope.lastMillis = curMillis;
            }
            return "?ran="+$scope.lastMillis;
        }