Access $refs from other components not in the same level as current component(从与当前组件不同级别的其他组件访问 $refs)
问题描述
我正在开发一个 Vue 应用程序.它有一个标题,然后是主要内容.嵌套和结构如下
I'm working on a Vue application. It has a header and then the main content. Nesting and structure as below
TheHeader.vue -> TheLogin.vue
MainContent.vue -> ShoppingCart.vue -> OrderSummary.vue
我需要从 OrderSummary.vue
this.$refs.loginPopover.$emit('open')
给我一个错误 "Cannot read property '$emit' of undefined"
所以很明显我无法从其他组件访问 $refs
.
gives me an error "Cannot read property '$emit' of undefined"
so obviously I am not able to access $refs
from other components.
问题是我如何从其他组件中获取 refs?提前致谢!
The question is how do I get hold of refs from other components? Thanks in advance!
编辑 1 - 发现 $refs 仅适用于子组件.如何访问不同级别的组件中的元素?
Edit 1 - Found out $refs works with only child components. How do I access elements across components in different level?
推荐答案
你绝对不想像那样通过层次结构.你正在打破封装.你想要一个全局事件总线.
You definitely don't want to be reaching through the hierarchy like that. You are breaking encapsulation. You want a global event bus.
这里有个秘密:有一个内置的,叫做 $root
.让你的 OrderSummary 做
And here's a secret: there's one built in, called $root
. Have your OrderSummary do
this.$root.emit('openPopup');
并在 TheLogin 的 created
挂钩中设置一个监听器:
and set up a listener in your TheLogin's created
hook:
this.$root.on('openPopup', () => this.$emit('open'));
一般来说,你应该尽量避免使用 refs.
In general, you should try to avoid using refs.
这篇关于从与当前组件不同级别的其他组件访问 $refs的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从与当前组件不同级别的其他组件访问 $refs
基础教程推荐
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 动态更新多个选择框 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01