如何将ng-repeat变量的值传递给输入["文件"]的onchange函数?

时间:2015-02-04 02:27:48

标签: javascript angularjs

ng-repeat="item in vm.items内,我有以下input["file"]

<input type="file" 
       ng-attr-id="image{{item}}"
       class="form-control"
       accept="image/*"
       onchange="angular.element(this).scope().vm.openFile(event, item)"
       required>

我使用vm.openFile而不是onchange来呼叫ng-change,因为ng-change类型不支持input["file"]

现在的问题是,由于以下错误,我无法将item传递给onchange函数:

Uncaught ReferenceError: item is not defined

如何将item的值(只是一个字符串)传递到onchange中的ng-repeat函数中?

1 个答案:

答案 0 :(得分:5)

由于onchange是一个内置函数,它不是由angular编译的,而是简单地执行全局范围的javascript。因此,由于全局范围内没有item变量(很好),它会崩溃。

出于同样的原因,您不能简单地编写vm,但必须编写angular.element(this).scope().vm,您需要对item变量使用相同的内容。因此html:

onchange="angular.element(this).scope().vm.openFile(event, angular.element(this).scope().item)"

请注意,我不知道这个event变量的来源,所以如果它是一个有角度的东西,你可能需要做同样的事情。

现在这是一个hack agisnt Angular设计原则,所以最好使用 David Williams 评论中指出的指令。