如何在前端拾取数组的特定元素,并在使用ng repeat时返回到控制器

How to pick a specific element of an array in the frontend and return to controller when using ng-repeat

本文关键字:ng repeat 控制器 返回 元素 前端 数组      更新时间:2023-09-26

我想显示所有文件名,并为每个文件提供一个下载按钮,使用以下代码:(这个问题的标题可能不太合适)

HTML:

<div ng-repeat="file in fileCtrl.filesInfo">
  <form method="get" ng-submit="fileCtrl.download()">
    <button type="submit">download</button>
  </form>
  <p> {{file.filename}} </p>
  <hr>
</div>
</div>

fileCtrl控制器:

// ... some more codes here
var vm = this;
vm.download = function() {
  File // service
    .getFile(filename)
    .success(function(data) {
      //.....
    });
};
// ... some more codes here

文件服务:

  fileFactory.getFile = function(filename) {
    return $http.get('/api/files/' + filename);
  };

问题:当用户点击下载按钮时,会有一个特定的filename,我如何将filename传递给控制器,让控制器知道用户要下载哪个文件,然后执行.getFile(filename)

您不需要表单。相反,在按钮上使用ng-click操作。

<div ng-repeat="file in fileCtrl.filesInfo">
  <button ng-click="fileCtrl.download(file.filename)">download</button>
  <p> {{file.filename}} </p>
  <hr>
</div>

还要注意,应该使用.then,而不是不推荐使用的.success

var vm = this;
vm.download = function(filename) {
  File // service
    .getFile(filename)
    .then(function(data) {
      //.....
    });
};