Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 无范围刷新的角度间隔_Javascript_Angularjs_Angularjs Directive_Setinterval_Karma Runner - Fatal编程技术网

Javascript 无范围刷新的角度间隔

Javascript 无范围刷新的角度间隔,javascript,angularjs,angularjs-directive,setinterval,karma-runner,Javascript,Angularjs,Angularjs Directive,Setinterval,Karma Runner,我在Angular服务中有一个$interval,它检查数组是否为空,并对数组的每个数据运行一个脚本。这很简单。我的问题是每次$interval运行时,我的作用域都会刷新一些指令“再次运行”。如果我使用javascript setInterval函数而不是$interval,结果就是我所期望的。但我想使用$interval,因为我不知道如何在运行karma测试时模拟对setInteval的调用。 关于如何使用$interval满足此需求,您有什么想法吗?如果不查看代码,很难确定,但我相信您可以在

我在Angular服务中有一个$interval,它检查数组是否为空,并对数组的每个数据运行一个脚本。这很简单。我的问题是每次$interval运行时,我的作用域都会刷新一些指令“再次运行”。如果我使用javascript setInterval函数而不是$interval,结果就是我所期望的。但我想使用$interval,因为我不知道如何在运行karma测试时模拟对setInteval的调用。
关于如何使用$interval满足此需求,您有什么想法吗?

如果不查看代码,很难确定,但我相信您可以在调用
$interval
时将第四个参数(
invokeApply
)设置为
false
。这应该可以防止对
$scope.$apply()
的幕后调用,我相信这就是正在发生的事情


有关更多详细信息,请参阅。

我已经尝试过此解决方案,但不起作用。范围将在每个时间间隔继续刷新。抱歉,我不允许发布任何代码:-(您是否可以在一个简单的示例中重现该行为,而不发布实际的公司代码?您可以使用此JSFIDLE作为起始模板:下面是一个我重现问题的小提琴:正如您在日志中看到的,由于控制器上的间隔,指令每秒运行一次。(我们每秒都会在日志中看到加载的url)原来
invokeApply
参数没有按照1.2.x版和更早版本中的设计工作。我更新了JSFIDLE以使用1.3.1版,并在调用
$interval
时添加了
、0、false
参数,这似乎可以解决问题。下面是、和。我在另一篇文章中问了这个问题。下面是a回答: