Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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 我很难运行$apply_Angularjs_Angularjs Scope - Fatal编程技术网

Angularjs 我很难运行$apply

Angularjs 我很难运行$apply,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我有一个元素列表,当我点击其中一个元素时,我填充模板,然后将其复制到新的DIV,我得到一个空模板,当我使用$scope.$apply()时,我得到一个错误 $scope.tache_list.forEach(element => { $scope.var1 = element; $scope.$apply(); $('#div2').append($("#div1").html()); }); 我得到错误$rootScope:inprog,我能做什么 请查看以下有关$

我有一个元素列表,当我点击其中一个元素时,我填充模板,然后将其复制到新的DIV,我得到一个空模板,当我使用
$scope.$apply()
时,我得到一个错误

$scope.tache_list.forEach(element => {
  $scope.var1 = element;  
  $scope.$apply();
  $('#div2').append($("#div1").html());  
});
我得到
错误$rootScope:inprog
,我能做什么


请查看以下有关$digest和$apply的内容


您的
inprogress
错误是因为您从
$apply块内部调用了
$apply()
。您只需从
外部调用$apply,即可开始新一轮的角度代码。因此,如果您的forEach中有一个
setTimeout()
,您可以在setTimeout中调用$apply,告诉angular您希望更新它。

请查看以下关于$digest和$apply的内容


您的
inprogress
错误是因为您从
$apply块内部调用了
$apply()
。您只需从
外部调用$apply,即可开始新一轮的角度代码。因此,如果您的forEach中有一个
setTimeout()
,您可以在setTimeout中调用$apply,告诉angular您希望更新它。

包装您的$scope。$apply调用在$timeout函数中

$timeout(function(){
   $scope.$apply()
});

原因:摘要循环将移动到事件循环,并在现有循环完成时执行。

将$scope包装起来。$timeout函数中的$apply调用

$timeout(function(){
   $scope.$apply()
});

原因:摘要循环将移动到事件循环,并在现有循环完成时执行。

我通过

$timeout(function(){
  $scope.$apply()
})
.then(function(){
  ...
});

谢谢大家。

我通过

$timeout(function(){
  $scope.$apply()
})
.then(function(){
  ...
});

谢谢大家。

请注意调用
$scope.$apply()
自己检查此链接AngularJS中的这种DOM操作是不明智的。为什么要使用
$scope.$apply()?您是否正在尝试修复一些其他问题,例如附加的代码不起作用?此代码有很多错误。首先,如果您发现自己需要
$scope.$apply()
,那么您可能做错了什么。其次,您似乎将JQuery与Angular混合在一起,但效果不好,这可能导致您认为需要使用
$apply()
。第三,现在还不清楚
#div2
#div1
中的内容,或者它们与您试图操纵的
元素的关系,但是如果您试图使用
#div1
作为
var1
的占位符,以便您可以在JQuery调用中使用它,这将永远不会起作用,你可能会考虑发布你正在使用的数据的例子和你想要达到的结果,所以我们可以帮助你编写一个正确的算法,它是盎格鲁JS友好的。请注意调用<代码> $范围。$Apple()
自己检查这个链接AngularJS内部的这种DOM操作是不明智的。为什么要使用
$scope.$apply()?您是否正在尝试修复一些其他问题,例如附加的代码不起作用?此代码有很多错误。首先,如果您发现自己需要
$scope.$apply()
,那么您可能做错了什么。其次,您似乎将JQuery与Angular混合在一起,但效果不好,这可能导致您认为需要使用
$apply()
。第三,现在还不清楚
#div2
#div1
中的内容,或者它们与您试图操纵的
元素的关系,但是如果您试图使用
#div1
作为
var1
的占位符,以便您可以在JQuery调用中使用它,这将永远不会起作用,你可能会考虑发布你正在使用的数据的例子和你想要达到的结果,所以我们可以帮助你编写一个合适的Angularjs友好的算法。虽然这可能是有效的,但是代码是完全混乱的,并且永远不需要<代码> $范围。$Apple()
首先。使用
$timeout$scope.$apply
是一个更深层次问题的症状。应该小心调查OP认为这有必要的原因。我同意。第一个目标应该是,在angularjs上下文中编写代码。上述解决方案只是一种变通方法。我们应该避免手动使用摘要循环。虽然这可能有效,但所讨论的代码是一团乱麻,一开始就不应该需要
$scope.$apply()
。使用
$timeout$scope.$apply
是一个更深层次问题的症状。应该小心调查OP认为这有必要的原因。我同意。第一个目标应该是,在angularjs上下文中编写代码。上述解决方案只是一种变通方法。我们应该避免手动使用摘要循环。使用
setTimeout$scope.$apply
是一个更深层次问题的症状。应注意调查OP认为有必要这样做的原因。@georgeawg我不是说他需要调用
setTimeout
,因为您需要使用
$timeout
,它将
$apply
包装在调用周围,我刚刚指出,如果使用的是
超出de angular
的转弯和设置$scope变量,则需要自己调用$apply或将代码包装在$apply块中。我也不明白OP为什么使用$scope。$apply()使用
setTimeout$scope。$apply是一个更深层次问题的症状。应注意调查OP认为有必要这样做的原因。@georgeawg我不是说他需要调用
setTimeout
,因为您需要使用
$timeout
,它将
$apply
包装在调用周围,我刚刚指出,如果使用的是
超出de angular
的转弯和设置$scope变量,则需要自己调用$apply或将代码包装在$apply块中。我也不明白OP为什么使用$scope.$apply()