我的html页面上有一个按钮列表,单击该按钮会在新页面中打开一个URL。但是,一些URL返回http 500错误。所以,如果按钮后面的链接返回https 500错误,我想禁用按钮。这是我的html和angular js代码。实际上,在html代码中,有一个循环用于遍历与特定数据相关的所有资源(由r显示)(使用data-ng-repeat),并检查资源的主要类型,如果它是LINKDOWNLOAD或LINK,如果LINK(r.url)未释放错误,则应出现一个按钮。
要检查url是否发布错误,我使用了isValid(r.url)函数。但是,我得到了无数的这个错误:错误:$ rootScope:infdig Infinite $ digest循环。
我对使用isValid(link)函数的方式做了很多改动。但他们没有成功。有什么帮助吗?我有一个ng-repeat循环时应该怎么做这个任务?
html页面的一部分:
<div class="gn-related-resources"
data-ng-if="relationFound">
<h2>{{::title}}</h2>
<div class=""
data-ng-repeat="(type, items) in relations track by $index"
data-ng-if="type && type !== 'thumbnails'">
<div class="row list-group-item gn-related-item"
data-ng-repeat="r in items track by $index"
data-ng-init="mainType = config.getType(r, type);">
<div class="col-xs-4" data-ng-if="mainType === 'LINKDOWNLOAD' || mainType === 'LINK'" >
{{isValid(r.url)}}
<button type="button"
class="btn btn-default btn-sm btn-block"
data-ng-show="isValid(r.url)"
data-ng-click="config.doAction(mainType, r, md)">
<span class="visible-lg-*">
{{::(config.getLabel(mainType, type)) | translate}}
</span>
</button>
</div>
</div>
</div>
</div>
angularjs指令的一部分:
module
.directive(
'gnRelated',
['gnRelatedService',
'gnGlobalSettings',
'gnRelatedResources',
function( gnRelatedService, gnGlobalSettings, gnRelatedResources) {
return {
restrict: 'A',
templateUrl: function(elem, attrs) {
return attrs.template ||
'../../catalog/components/metadataactions/partials/related.html';
},
scope: {
md: '=gnRelated',
template: '@',
types: '@',
title: '@',
list: '@',
user: '=',
hasResults: '=?'
},
link: function(scope, element, attrs, controller) {
var promise;
scope.updateRelations = function() {
scope.relations = [];
if (scope.uuid) {
scope.relationFound = false;
(promise = gnRelatedService.get(
scope.uuid, scope.types)
).then(function(data) {
scope.relations = data;
angular.forEach(data, function(value) {
if (value) {
scope.relationFound = true;
scope.hasResults = true;
}
});
});
}
};
答案 0 :(得分:1)
我强烈建议你永远不要做这些事情:TIdTCPServer
TBitmap.SaveTo...()
您调用异步调用的每个摘要周期
你有{{isValid(r.url)}}
列表,创建所有的Promise,a.e。 scope.isValid = function(link)
{
$http.get(link).then(
function(success) {
return true;
}, function(error) {
return false;
});
};
并分别渲染结果。
相反relations
我会写一些类似的东西:
$q.all([])
运行所有请求后将创建isValid(r.url)