下载按钮未响应 angularjs 中的 ng-disabled

Download button not responding to ng-disabled in angularjs

我有一个网页,点击它会显示 folder/directory 的内容。如果文件夹的内容有文件,则下载按钮被激活。如果文件夹的内容是一个目录,下载按钮是无效的。

这是我的代码,应该可以完成这项工作。但是“下载”按钮始终保持活动状态并且永远不会处于非活动状态。有人可以指出我哪里出错了吗?

$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>

您的 IsFile 函数没有 return 任何明确的内容(即它 returns undefined)并且 ng-disabled 将其解释为 false .第 4 行和第 7 行的 return truereturn 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
}