我正在使用Angularjs和Cordova开发一个应用程序,其中有一个文件列表中的下载文件功能,下载时我正在显示一个进度文本以显示下载状态。
这是我的代码
<div class="card" ng-repeat="result in results">
<button ng-click="downloadVideo(result.file_url)">Download</button>
<!--for showing download status-->
<span ng-show="status">{{progress}}</span>
</div>
在我的控制器中
.controller('VideoCtrl', function($scope,$http) {
/* get json link of the video files
$http.get(url).then(function(data){
$scope.results=data;
},function(err){
console.log("Can't connect to server,check connection url");
});
/*--for downloading videos--*/
$scope.downloadVideo=function(url){
$scope.progress='20% downloaded';
}
问题是当我点击下载按钮时,所有span
都会显示下载进度文本,但我只想显示一个span
,其中包含进度文本而不是整个范围。
答案 0 :(得分:1)
您应该将progress
属性绑定到每个结果,而不是直接将其绑定到scope
。
像:
<div class="card" ng-repeat="result in results">
<button ng-click="downloadVideo(result)">Download</button>
<!--for showing download status-->
<span ng-show="status">{{result.progress}}</span>
</div>
$scope.downloadVideo=function(result){
url = result.file_url;
result.progress = '20% download';
}
答案 1 :(得分:0)
使用数组存储每个视频的进度,即
/*controller*/
$scope.progress = [] ;
$scope.downloadVideo = function(url, index) {
$scope.progress[index] = 'some %';
...
};
$scope.displayProgress = function(index) {
if($scope.progress[index] > 0)
return $scope.progress[index] + ' % downloaded' ;
else
return '' ;
};
然后在HTML中,
<div class="card" ng-repeat="result in results">
<button ng-click="downloadVideo(result.file_url, $index)">Download</button>
<!--for showing download status-->
<span ng-show="status">{{displayProgress($index)}}</span>
</div>
答案 2 :(得分:0)
HTML文件:
<script>
<script src="https://cdn.rawgit.com/rainabba/jquery-table2excel/1.1.0/dist/jquery.table2excel.min.js"></script>
</script>
<body>
<button type="button" class="btn btn-lg btn-block btn-primary margin rightmargin "
ng-click="tableToExcel()">Download Data</button>
</body>
abc.js文件:
//copy all data of database to excelsheet
$scope.tableToExcel = function () {
$("#table2Id").table2excel({
filename: "Table.xls"
});
}