javascript - 使用 ng-repeat 时如何在前端选择数组的特定元素并返回到 Controller

标签 javascript html angularjs model-view-controller

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

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 Controller :

// ... 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);
  };

问题:当用户点击下载按钮时,会有一个特定的文件名,如何将文件名传递给 Controller ​​并让 Controller 知道用户下载的是哪个文件想要下载,然后执行.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) {
      //.....
    });
};

关于javascript - 使用 ng-repeat 时如何在前端选择数组的特定元素并返回到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836595/

相关文章:

javascript - Reactjs - 无法修改输入

javascript - Angulartics 不会跟踪我在按钮或链接上的事件

javascript - Angularjs 从数组中获取值

javascript - 输入光标在输入事件时跳转到输入字段的末尾

html - Bootstrap 在中间居中一个 Div

javascript - Node.js crypto.pbkdf2Sync 密码与 python 脚本不匹配

javascript - 根据到达地点更换页面内容 Angular 5

angularjs - 使用 "resolve"单元测试 AngularJS 路由

javascript - 如何检查我上传的输入文件的重复项?

javascript - 如何使 for 循环中的事件监听器每次单击将一个元素推送到数组