我有一个网页,点击它后会显示文件夹/目录的内容。如果文件夹的内容包含文件,则激活下载按钮。如果文件夹的内容是目录,则下载按钮处于非活动状态。
这是我应该做的工作的代码。但“下载”按钮始终处于活动状态,永远不会处于非活动状态。有人可以指出我出错的地方吗?
$scope.IsFile = function(filenames){
forEach(filenames, function(filename){
if(filename.indexOf(".zip") > 1|| filename.indexOf(".txt") >1 || filename.indexOf(".xml") > 1 ) {
return true;
}
else {
return false;
}
});
};

<div class="col-md-3" id="CTP Jobs">
<div ng-click="GetListOfFilesonCTP('/home/topas/rda_app/JOBS/')">
<a href="">
<h3>
JOBS <small> <span class="btn-group"
role="group">
<button type="button" class="btn btn-default" ng-disabled="IsFile(listOfFilesOnJobs)"
ng-click="download()">Download</button>
</span>
</small>
</h3>
</a>
</div>
<table class="table table-striped"
ng-init="GetListOfFilesonCTP('/home/topas/rda_app/JOBS')">
<tr ng-repeat="jobs in listOfFilesOnJobs"
ng-click="GetListOfFilesonCTP(getPath('/home/topas/rda_app/JOBS/', jobs))">
<!--'/home/topas/rda_app/JOBS/'+ jobs + '/' -->
<td><a href="">{{jobs}}</a></td>
</tr>
</table>
</div>
&#13;
答案 0 :(得分:1)
您的IsFile
函数未明确返回任何内容(即返回undefined
),ng-disabled
将其解释为false
。第4行和第7行的return true
和return false
与传递给forEach
的函数有关,这可能不是您想要的。您的意思是过滤文件列表并检查是否还有文件?这样的事情可以做到:
$scope.isFile = function(filenames) {
return filenames.filter(function(filename) {
return filename.indexOf(".zip") > 1 ||
filename.indexOf(".txt") > 1 ||
filename.indexOf(".xml") > 1
}).length > 0
}