【发布时间】:2020-09-15 07:03:04
【问题描述】:
我有一个名为 myElement 的作用域插槽,我可以通过 this.$scopedSlots.myElement()[0] 访问它。
通常当一个 vnode 被挂载时,有一个包含 DOM 元素的$el,但显然不在作用域插槽中,只有一个未定义的elm。
我还尝试在子模板中的插槽上放置一个引用并通过.context.$refs 访问它,但它仅列出了父模板上的引用。
如果子组件不知道它的 id 或类,我有什么方法可以访问挂载的 DOM 元素?
谢谢
更多详情:
父模板(Pug)
child-component
template(v-slot:myelement="{ on }")
span My element content
子组件
mounted () {
console.log(this.$scopedSlots.myelement()[0])
// From here I want to get the position of the span with
// span.getBoundingClientRect()
}
复制链接:
https://codepen.io/antoniandre/pen/BaogjrM?editable=true&editors=101
【问题讨论】:
-
您需要在代码中的哪个位置访问元素?您是在渲染函数或模板中渲染作用域插槽吗?如果您可以提供一些示例代码来说明您正在尝试做什么,这将有所帮助,因为答案取决于您的情况。
-
我已更新问题以提供更多详细信息@DecadeMoon
-
这听起来好像插槽还没有安装。尝试等待渲染周期。等待这个。$nextTick()
-
我试过了
-
这里是复制链接:codepen.io/antoniandre/pen/…
标签: vue.js