如何使用文件输入获取ng-repeat内的索引?

时间:2018-04-09 13:16:23

标签: javascript angularjs angularjs-ng-repeat

我有一系列记录,我使用文件输入上传。我的目的是在单击“+”时连续上传文件,并在单击“x”时删除文件。

我的问题是,每当我在一个记录中上传一个文件时,所有其他记录也会被同一个文件更新。我确信我错过了在这里使用$index逻辑。我已经通过this文件输入事件传递onchange。我怎样才能将$index与其一起传递?

<div ng-repeat="itemList in FilesToShow track by $index">
    <div style="width: 90%; display: inline-block;">{{itemList.FileName}}</div>
    <div style="cursor:pointer;display: inline-block;"
         ng-click="removefile(itemList)">x</div>
    <div style="cursor:pointer;display: inline-block;"
         ng-focus="$parent.focused = true" ng-if="FilesToShow.length==0">+</div>
</div>
<input ng-if="focused" ng-disabled="FilesToShow.length==1" type="file"
       id="fileId" value="Browse..." name="file"
       onchange="angular.element(this).scope().getFileDetails(this)" />
$scope.FilesToShow = [];
$scope.getFileDetails = function(hisLstFile) {
  $scope.$apply(function() {
    var Historyvalue = {
      FileName: hisLstFile.files[0].name,
      IsFileDeleted: false,
      DownloadPath: null,
      Id: null
    };
    $scope.FilesToShow.push(Historyvalue);
  });
}

1 个答案:

答案 0 :(得分:0)

您可以在函数中传递$index作为参数。 请确保它位于ng-repeat范围内。 像:

onchange="myFunction(this, $index)";
祝你好运:)