是否可以在内联/内模板处理程序中访问传递给已发出事件的参数?比如:

<component @some-event="someObject.field = $arguments[0]"></component

我要做的就是给作用域中的一个对象赋值.我知道我可以创建一个方法来实现这一点,并将其用作事件的处理程序,但我想知道这是否可以用作内联语句.

推荐答案

不是$arguments[0]美元,而是arguments[0]美元(不含美元).我很惊讶它实际上在内联处理程序中工作.因此,以下代码是有效的,可以工作:

<component @some-event="someObject.field = arguments[0]"></component>

docs for Methods in Inline Handlers$event指定为一个特殊变量,用于获取通过事件传递的第一个参数.我一直用到现在.

在阅读了你的问题之后,更多的研究让我找到了这个参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments

似乎每个javascript函数都有一个名为arguments的局部变量,当函数需要获得可变数量的参数时,就会使用这个变量.

使用arguments[]作为内联语句绝对是可能的,但在vue的上下文中没有记录.js框架.另一方面,如果在事件的内联处理程序中使用$event,它会感觉更安全,因为它有明确的文档记录,并且不会在future 版本的Vue中中断.js

$event的示例用法:

<component @some-event="someObject.field = $event"></component>

Vue.js相关问答推荐

无法解析组件:google—pay—button

VUE:带自定义组件的数组输入绑定

如何以惯用的方式触发 vue3 中同级组件的效果?

我需要在 nuxt2 上使用 /index 作为 url 的一部分

传单 vue3 组件变体打开错误的标记 - 单击时弹出

Vuetify 扩展面板,面板标题左侧带有图标

如果找不到路由,Vue.js如何重定向到公共路由

webpack vue-loader 配置

理解 VueJS 中的组件 props

Vuetify Datatable - 在所有列上启用内容编辑

判断 vue-router.beforeEach 不限制对路由的访问

可以同时使用 Tailwind css 和 Bootstrap 4 吗?

在 vuejs 中的图像中包含 router-link 标记

如何告诉 Vue 应用使用 Firebase 模拟器?

如何在 VueJS 中访问 [__ob__: Observer] 的元素?

如何禁用 nuxt 默认错误重定向

如何确定 Vue 何时完成更新 DOM?

Vue Js如何在单个文件模板中使用mixins?

如何在 Vue.js 中延迟 @keyup 处理程序

如何修复套接字 io 中的 400 错误错误请求?