【问题标题】:Pass angularJS $index into onchange将 angularJS $index 传递给 onchange
【发布时间】:2014-06-02 03:50:54
【问题描述】:

我的 angularJS 应用程序的 ng-repeat 中有一个输入文件。我需要将 $index 变量传递给 onchange 属性。我使用的是 onchange 而不是 ng-change,因为我需要上传的对象 (see this post)

在以下代码中,我得到“未捕获的 ReferenceError:$index 未定义”

Jade 代码示例:

div.input-group(ng-repeat='filename in filenames track by $index') 
    input(type='file', onchange="angular.element(this).scope().file_changed(this.files, **$index**)")

【问题讨论】:

  • 你试过angular.element(this).scope().$index吗?
  • 像魅力一样工作!请将其发布为答案,我将对其进行验证。谢谢

标签: html angularjs


【解决方案1】:

onchange 属性中,范围只能通过angular.element(this).scope() 访问。这是您用来调用file_changed() 函数的方法,您应该使用相同的方法来访问$index 属性:

 <input type="file" onchange="angular.element(this).scope().file_changed(this.files, angular.element(this).scope().$index)" />

请注意,这会变得很长!一种解决方案是简单地将 DOM 元素传递给函数,并从中获取所有信息:

 <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;

    // …
};

【讨论】:

  • @ncohen 我很确定var index = $scope.$index; 也应该可以正常工作。可以试试吗?
  • @ncohen 在file_changed() 方法中,我的意思是。没有?
  • var index = angular.element(ele).scope().$index;总是返回 0。有什么想法吗?
  • @beewest 需要MCVE 来帮助您。我只能建议你为你的案子提出一个问题。不要犹豫,链接到这个以展示您的研究成果。
  • 我使用了相同的。在我的情况下,我想用不同的行上传不同的文件。使用上述解决方案索引总是为每一行返回零。请你帮忙。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-02-06
  • 2016-02-10
  • 2020-11-17
  • 2016-04-17
  • 2014-09-27
  • 2020-07-03
  • 2013-03-08
  • 2012-04-29
相关资源
最近更新 更多