将angularJS $ index传递给onchange

时间:2014-06-01 19:24:50

标签: html5 angularjs

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

在下面的代码中,我得到'未捕获的ReferenceError:$ index未定义'

玉代码示例:

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

1 个答案:

答案 0 :(得分:6)

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;

    // …
};