Angularjs 代码中的$scope.apply()导致具有scope.apply()的单元测试出错
我在控制器文件中有一个函数Angularjs 代码中的$scope.apply()导致具有scope.apply()的单元测试出错,angularjs,jasmine,Angularjs,Jasmine,我在控制器文件中有一个函数 function getMeData(){ service().then(function(response){ vm.arrayOfObj = response; getMeValueUpdated(someresponse); }) } function getMeValueUpdated(someresponse){ for(i=0;i<=vm.arrayOfObj.length;i++){ if(condition){
function getMeData(){
service().then(function(response){
vm.arrayOfObj = response;
getMeValueUpdated(someresponse);
})
}
function getMeValueUpdated(someresponse){
for(i=0;i<=vm.arrayOfObj.length;i++){
if(condition){
vm.arrayOfObj[i] = someresponse
}
}
$scope.apply(); // to update data on view
}
当到达scope.apply in代码时,测试抛出已经在进行的错误摘要周期
我知道如果没有“砰”的一声,预测解决方案是太难了。但是一些提示可能会有所帮助。您确定在这种情况下,
$scope.$apply()
是必需的吗?这段代码看起来都是代码角,可以检测到已经发生的变化;虽然这是伪代码,但在实际不需要时错误地添加$scope.$apply()
在angular中是一个非常常见的问题。您已经在更新vm.arrayOfObj
,这将导致摘要循环。您不需要调用$scope.apply()
谢谢您的回复。scope.apply是必需的,因为如果没有它,UI将不会使用新值进行更新。
it('title', function(){
...
defer.resolve(fakeresponse);
$scope.apply();
...
})