AngularJS 错误:$rootScope:infdig 无限$digest循环
AngularJS Error: $rootScope:infdig Infinite $digest Loop
我知道这个问题之前已经提到过几次,但我似乎无法使任何这些解决方案对我有用。
在我的控制器中,我有一个函数,该函数旨在从 ng-repeat 循环中调用。ng-repeat 遍历服务器列表,并通过视图上的方法调用此函数以获取有关该服务器的一些环境数据。
这个功能似乎是问题的根源,但我无法弄清楚如何解决它。
控制器中的功能:
function getServHead(data) {
SearchFactory.servHeader(data).then(
function (response) {
$log.info(response);
vm.searchData.server.sh = response;
return vm.searchData.server.sh;
},
function (error) {
$log.error('Error getting server header data', error);
vm.getTeamHeadInfoError = 'Error retrieving server header data';
})
}
以下是我返回的数据示例:
{
"name": "dcsql01",
"isVirtual": false,
"os": "Windows",
"isInDMZ": false
}
我如何从视图中调用:
<tr ng-repeat="server in vm.searchData.server">
<td>
<a href="/server/{{server.Name}}">
{{vm.getServHead(server.AssetID)}}
<span ng-if="vm.searchData.server.sh.isVirtual == true" class="fa fa-cloud fa-lg"> </span>
<span ng-if="vm.searchData.server.sh.isVirtual != true"class="fa fa-tasks fa-lg"> </span>
<span ng-if="vm.searchData.server.sh.isInDMZ == true" class="fa fa-user-secret fa-lg"> </span>
<span ng-if="vm.searchData.server.sh.isInDMZ != true" class="fa fa-university fa-lg"> </span>
<span ng-if="vm.searchData.server.sh.os == 'windows' || 'Windows'" class="fa fa-windows fa-lg"> </span>
<span ng-if="vm.searchData.server.sh.os == 'linux' || 'Linux'" class="fa fa-linux fa-lg"> </span>
{{server.Name}}</a>
</td>
<td>
<td> <span class='health'>100</span> </td>
</td>
</tr>
我已经尝试返回 GET 响应,例如建议此错误的 Angular 帮助页面,并尝试了此问题的其他各种 SO 答案,但仍然遇到同样的问题。
如果有人能够对我做错的地方有所了解,将不胜感激。
编辑:
控制器中的服务器列表调用:
function getServers() {
SearchFactory.getServer(searchID).then(
function (response) {
$log.info(response);
vm.searchData.server = response;
},
function (error) {
$log.error('Error getting server search data', error);
vm.getServerInfoError = 'Error retrieving server search data';
})
}
这是在初始化时运行的,并将参数(searchID)中的内容传递给API,后者返回服务器对象的基本数组。
对于初学者来说,then(response)
中的实际数据包含在response.data
中。
以下内容将在重复的 ECH 服务器的属性server.sh
中填充 HEAD 数据
function getServers() {
return SearchFactory.getServer(searchID).then(function(response) {
$log.info(response.data);
vm.searchData.server = response.data;
return vm.searchData.server;
},
function(error) {
$log.error('Error getting server search data', error);
vm.getServerInfoError = 'Error retrieving server search data';
})
}
getServers().then(function(servers) {
servers.forEach(function(server) {
var id = server.AssetID;
SearchFactory.servHeader(id).then(function(response) {
$log.info(response);
server.sh = response.data;
},
function(error) {
$log.error('Error getting server header data', error);
vm.getTeamHeadInfoError = 'Error retrieving server header data';
});
});
});
如果您希望在将 dat 传递到视图之前检索所有数据,则需要创建承诺数组并使用$q.all()
示例视图更改为:
改变
<span ng-if="vm.searchData.server.sh.isVirtual == true" class="fa fa-cloud fa-lg"> </span>
自
<span ng-if="server.sh.isVirtual == true" class="fa fa-cloud fa-lg"> </span>
相关文章:
- jQuery:循环一个具有不同超时值的循环
- 在循环中分配json值时,值被覆盖
- 数组过滤器导致无限$digest循环
- AngularJS错误:$rootScope:infdig Infinite$digest循环:达到10次$digest
- angularjs 无限$digest 当范围没有变化时循环
- $http调用似乎产生了无限$digest循环
- 当事件触发时$digest如何由 angular 调用的循环
- AngularJS 错误:$rootScope:infdig 无限$digest循环
- infdig 无限$digest表中的循环
- AngularJS v1.2.x $digest() 无限循环指令隔离范围对象参数
- 过滤对象数组时的无限$digest循环
- IE11-使用ui路由器的angular js中的无限$digest循环
- 根据AngularJS中$apply或$digest循环的指令更新模型
- Angular如何在$digest循环后更新视图
- Angular会在相同的$digest循环中重新求值相同的$watch表达式吗?
- 使用$digest的无限循环
- 避免$watch()循环导致$digest已经在进行中的错误
- 如何强制Angular 1.x Digest循环运行3次
- 指令错误 $rootScope:infdig 无限$digest循环
- 调用$watchCollection时的angular$digest无限循环