我在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**)")
答案 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;
// …
};