javascript - VueJS:如何将实例数据传递给通过匿名事件处理程序调用的实例方法?
问题描述
为了测试 Vue 事件绑定是否可以访问实例状态/数据,我将(实例数据)传入一个调用(实例方法)msg
的匿名 fn 。alertMsg(msg)
但似乎只有默认事件 obj (在本例中为 Mouse 事件)被传递给alertMsg(msg)
而不是msg
.
甚至尝试过,(ev, msg)
即传递ev
(事件 obj)并msg
作为第二个参数,但仍然只有事件 obj 被传递
模板
<div id="app">
<p>{{ msg }}</p>
<div @click="msg => { alertMsg(msg)}">test</div>
</div>
Vue 实例
new Vue({
el: '#app',
data() {
return {
msg: 'Hello World'
}
},
methods: {
alertMsg(e, msg) {
console.log(e)
alert(msg)
}
}
})
如何使这项工作?
谢谢
解决方案
根据文档,您必须使用特殊的 $event 变量:
https://vuejs.org/v2/guide/events.html#Methods-in-Inline-Handlers
如:
<div id="app">
<p>{{ msg }}</p>
<div @click="alertMsg($event, msg)">test</div>
</div>
如果您想直接从函数中访问“msg”,请使用“this.msg”。
推荐阅读
- java - JPA/Hibernate:连接表上的多对多删除关系
- excel - 我的 NetWorkDays 有时超过日历天数
- r - 使用 HTS 在 R 中进行分层预测 - “字符 =”中的错误
- javascript - Javascript - 如何混合具有特定排序顺序的两个对象数组?
- php - 用户登录未加载且未重定向到仪表板
- r - R TinyTeX 安装会干扰我电脑上的其他 LaTeX 安装吗
- python - 检查文件中的行是否包含Python中的大写字母
- ldap - Dcm4chee 与 ldap://ldap:389 的连接断开 - 重新连接错误
- docker - 将 Traefik 前端重定向替换与 PathPrefixStrip 相结合
- sql - SQL server 和 STUFF 有两个表