【问题标题】:Pass Angularjs $index into onchange with ng repeat and input type is file使用 ng repeat 将 Angularjs $index 传递给 onchange 并且输入类型是文件
【发布时间】:2018-10-14 00:54:14
【问题描述】:

嗨,我对 Angularjs 很陌生。我正在使用 ng repeat 创建一个表行,行包含输入类型文件,所以我想从不同的行上传不同的文件。我想用 onchange 方法为每一行传递索引。但索引总是返回零。 代码sn-p

input type="file" onchange="angular.element(this).scope().file_changed(this)" 

scope.file_changed = function (element) { 
var index = angular.element(element).scope().$index;
var files = element.files;

};

【问题讨论】:

  • 你的控制器是什么样子的?

标签: javascript html angularjs


【解决方案1】:

我不确定使用 angular.element 调用 file_changed() 方法的目的是什么。这不是 Angular js 中的正确方法。如果此方法已经在您的控制器范围内,您可以像下面这样直接从 html 访问,您可以将 $index 作为参数传递给该方法。

 <div ng-repeat="row in rows track by $index">
    <input type="file" onchange="file_changed(this,$index)" 
  </div>

我假设你的控制器会喜欢这个

  app.controller('YourController', function($scope) {
       $scope.file_changed=function(element,index){ 
            var files = element.files;
       }  
});

【讨论】:

  • 是的,我的控制器与您在上面定义的一样。我尝试了您在上面提供的解决方案,但这没有帮助。抛出此异常。在下面的代码中,我得到 'Uncaught ReferenceError: $index is not defined' 。
  • 在onchange属性中,作用域只能通过angular.element(this).scope()访问。
  • @Suri 您是否尝试过在 ng-repeat 中明确使用 track by $index ?检查我的答案
  • @Suri 欢迎您。如果有效,您可以将其标记为答案
猜你喜欢
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多