在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
函数中?
答案 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 评论中指出的指令。