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

时间:2016-04-20 22:07:04

标签: angularjs angularjs-scope angular-ngmodel angularjs-ng-disabled

我有一个网页,点击它后会显示文件夹/目录的内容。如果文件夹的内容包含文件,则激活下载按钮。如果文件夹的内容是目录,则下载按钮处于非活动状态。

这是我应该做的工作的代码。但“下载”按钮始终处于活动状态,永远不会处于非活动状态。有人可以指出我出错的地方吗?



$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;
&#13;
&#13;

1 个答案:

答案 0 :(得分: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
}