javascript - 单击时的多个功能可防止带有事件参数的功能-Vue
问题描述
如果我有多个函数传递给点击事件,即
@click="
inputHandler();
sendToken(computedUser.email);
responseMessage();
"
带有事件参数的函数:
inputHandler(e) {
// code
}
不会跑。如果我自己传递它:
@click="inputHandler"
它工作正常。
为什么会这样,我该如何解决?
解决方案
在内部,Vue 使用一些 RegExps 来决定您使用哪种形式的事件处理程序。
如果它似乎是一个方法的名称,它将调用它并传递事件。
如果它似乎是内联代码,它只会运行它。在这种情况下,事件对象可以作为$event
.
所以:
@click="inputHandler($event)"
大致相当于:
@click="inputHandler"
严格来说,这些并不完全等效,例如,对于发出多个参数的组件事件,您只会$event
像这样使用第一个。
请参阅https://vuejs.org/v2/guide/events.html#Methods-in-Inline-Handlers
如需更深入的了解,请参阅 Vue 源代码:
给你的眼睛几分钟时间来调整,这并不难理解。
就我个人而言,我尽量避免比内联侦听器中的单个方法调用更复杂的事情。相反,我建议有类似的东西@click="onSendClick"
,让方法onSendClick
担心细节。
推荐阅读
- terraform - terraform import:如何避免在自动脚本中重新导入时出错
- r - 如何翻转 ggplot2 图表上的趋势线模式?
- python - 使用 Python 的 parsec.py 库进行递归解析
- python - 为什么我的程序加载的屏幕与我需要的屏幕不同?
- arrays - 我怎样才能为两个未排序的数组代码编写这个?
- webforms - 使用面向 .NET Framework 4.6.1 的 Web 表单应用程序对 IdentityServer4 进行基于角色的授权
- javascript - 使用 Nock 记录/回放 http 交互以进行黄瓜 js 测试?
- java - 在Junit中测试子类时设置超类的变量
- mysql - 与另一列的所有元素相关的列中的值
- scala - 读取具有不同架构的 JSON 文件