0

Ich habe eine Webseite, die den Inhalt eines Ordners/Verzeichnisses anzeigt, wenn Sie darauf klicken. Wenn der Inhalt eines Ordners Dateien enthält, ist der Download-Button aktiviert. Wenn der Inhalt des Ordners ein Verzeichnis ist, ist der Download-Button inaktiv.Download-Button reagiert nicht auf ng-deaktiviert in angularjs

Hier ist mein Code, der das funktionieren soll. Die Download-Schaltfläche bleibt jedoch immer aktiv und wird niemals inaktiv. Kann jemand darauf hinweisen, wo ich falsch liege?

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

Antwort

1

Ihre IsFile Funktion nichts zurückliefert explizit (das heißt, es gibt undefined) und ng-disabled interpretiert, dass als false. Die return true und return false in den Zeilen 4 und 7 beziehen sich auf die Funktion forEach, die wahrscheinlich nicht das ist, was Sie wollen. Wollten Sie die Liste der Dateien filtern und prüfen, ob noch Dateien übrig sind? So etwas wie dies tun würde:

$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

Ich möchte den Inhalt des Ordners überprüfen, dh Array/Liste der Inhalte in diesem Ordner, und wenn es irgendwelche Dateien mit .zip, .xml oder .txt enden, ich möchte wahr zurückgeben. Wenn nicht, dann gebe false zurück. Ich versuchte Ihren Code, aber es schien nicht für meinen Fall zu funktionieren. –

+0

Was meinst du mit "schien nicht zu arbeiten"? Die Schaltfläche befindet sich nicht in dem gewünschten Zustand? Kannst du ein Beispiel geben? –

+0

Ich bin neu bei angularjs .. Ich bin mir nicht bewusst über die Verwendung von Filtern .. Ich wollte sagen, dass der Button überhaupt nicht deaktiviert wird. bleibt immer aktiviert. –

Verwandte Themen