0

我有一個網頁,當點擊它時顯示文件夾/目錄的內容。如果文件夾的內容有文件,則下載按鈕被激活。如果文件夾的內容是目錄,則下載按鈕處於非活動狀態。下載在angularjs中沒有響應ng-disabled的按鈕

這是我的代碼,應該使這項工作。但「下載」按鈕始終處於活動狀態,永遠不會無效。有人能指出我要去哪裏嗎?

$scope.IsFile = function(filenames){ 
 
\t \t forEach(filenames, function(filename){ 
 
\t \t \t if(filename.indexOf(".zip") > 1|| filename.indexOf(".txt") >1 || filename.indexOf(".xml") > 1) \t { 
 
\t \t \t \t return true; 
 
\t \t \t } 
 
\t \t \t else { 
 
\t \t \t \t return false; 
 
\t \t \t } 
 
\t \t }); 
 
\t };
<div class="col-md-3" id="CTP Jobs"> 
 
\t \t <div ng-click="GetListOfFilesonCTP('/home/topas/rda_app/JOBS/')"> 
 
\t \t \t <a href=""> 
 
\t \t \t \t <h3> 
 
\t \t \t \t \t JOBS <small> <span class="btn-group" 
 
\t \t \t \t \t \t role="group"> 
 
\t \t \t \t \t \t \t <button type="button" class="btn btn-default" ng-disabled="IsFile(listOfFilesOnJobs)" 
 
\t \t \t \t \t \t \t \t ng-click="download()">Download</button> 
 
\t \t \t \t \t </span> 
 
\t \t \t \t \t </small> 
 
\t \t \t \t </h3> 
 
\t \t \t </a> 
 
\t \t </div> 
 
\t \t <table class="table table-striped" 
 
\t \t \t ng-init="GetListOfFilesonCTP('/home/topas/rda_app/JOBS')"> 
 
\t \t \t <tr ng-repeat="jobs in listOfFilesOnJobs" 
 
\t \t \t \t ng-click="GetListOfFilesonCTP(getPath('/home/topas/rda_app/JOBS/', jobs))"> 
 
\t \t \t \t <!--'/home/topas/rda_app/JOBS/'+ jobs + '/' --> 
 
\t \t \t \t <td><a href="">{{jobs}}</a></td> 
 
\t \t \t </tr> 
 
\t \t </table> 
 
\t </div>

回答

1

IsFile功能不明確返回任何東西(即它返回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 
} 
+0

我要檢查的文件夾,該文件夾中的內容,即數組/列表的內容,如果有與.zip文件,.XML或.txt後綴的文件,我想要返回true ..如果不是,則返回false。 我試過你的代碼,但它似乎沒有爲我的案件工作.. –

+0

你是什麼意思的「似乎沒有工作」?該按鈕沒有處於你想要的狀態?你能舉個例子嗎? –

+0

我是新來的angularjs ..我不知道過濾器的用法..我的意思是說,該按鈕不會被禁用。總是保持啓用.. –