vue定义组件this指向

定义某个组件的this
在这里插入图片描述
其他组件调用的定义好的组件,就能调用该定义好的组件属性和方法
在这里插入图片描述

global相当于window

这种定义方便快捷,能省vuex,bus等的这种写法(小调用的简便情况下)。

### Vue 中 `addEventListener` 的 `this` 指向问题 在 Vue 组件的方法中使用原生 JavaScript 的事件监听器 (`addEventListener`) 时,可能会遇到 `this` 不是指向当前 Vue 实例的情况。这是因为当回调函数被触发时,默认情况下其上下文可能不是 Vue 实例。 为了确保 `this` 正确指向 Vue 实例,在定义事件处理程序时可以采用箭头函数来自动绑定父级作用域中的 `this`[^1]: ```javascript mounted() { const element = document.getElementById('myElement'); // 使用箭头函数保持 this 指向 Vue 实例 element.addEventListener('click', () => { console.log(this.message); // 访问 Vue 数据属性 message }); } ``` 另一种常见做法是在创建组件实例之前保存对 `this` 的引用,并将其传递给事件处理器作为参数之一[^2]: ```javascript data() { return { myMessage: "Hello", self: null, }; }, created() { this.self = this; }, methods: { handleClick(event) { console.log(this.self.myMessage); } }, mounted() { const element = document.getElementById('myElement'); element.addEventListener('click', this.handleClick.bind(this)); } ``` 此外还可以利用 Vue 提供的 `$refs` 来获取 DOM 节点并附加事件监听器,这样也可以简化操作并且更好地遵循 Vue 的编程范式[^3]: ```html <template> <div ref="target"></div> </template> <script> export default { mounted() { let targetElm = this.$refs.target; targetElm.addEventListener('click', event => { console.log(this.someDataProperty); // 这里的 this 是指 Vue 实例 }) }, }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值