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

标签 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 的值(只是一个字符串)传递到 ng-repeat 中的 onchange 函数?

最佳答案

因为 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 变量来自哪里,所以如果它是一个 Angular 东西,你可能需要为它做同样的事情。

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

关于javascript - 如何将 ng-repeat 变量的值传递给输入 ["file"] 的 onchange 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28312512/

相关文章:

javascript - 分页: How to limit number of pages on small screen devices

javascript - 在自定义指令的链接函数中使用 $document.off

javascript - iOS webview 无法使用历史记录返回

javascript - 如何更好地编写它,例如lodash

javascript - Owl Carousel : flickering on tablet view

javascript - 如何让 Javascript 在继续之前等待异步调用?

javascript - 在 css 中评价星星不起作用

angularjs - AngularModalService : passing data to controller

javascript - 在函数内使用对象变量。 JavaScript

javascript - 如何从常规网站调用 Chrome 扩展中定义的函数?