首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在作用域插槽中获取refs元素

如何在作用域插槽中获取refs元素
EN

Stack Overflow用户
提问于 2018-09-21 17:10:32
回答 3查看 8.1K关注 0票数 4

如果插槽的模板中有一些引用,我如何从组件访问这些引用?例如:

v-component.vue

代码语言:javascript
复制
<template>
    <div>
        <slot></slot>
    </div>
</template>
<script>
   export default {
       created() {
           console.log(this.$refs.ele)
       }
   }
</script>

app.vue

代码语言:javascript
复制
<template>
    <v-component>
       <template slot-scope="props">
          <h1 ref="ele"></h1>
       </template>
    </v-component>
</template>
<script>
   import VComponent from './v-component
   export default {
       components: { VComponent }
   }
</script>

v-compoent.vue输出中的this.$refs.ele未定义。我的问题是如何获得这个元素?

EN

回答 3

Stack Overflow用户

发布于 2018-09-21 17:26:23

命名为slotscopedSlot的每个元素都有context.$refs。不要忘记先检查对象是否存在。

代码语言:javascript
复制
<template>
    <v-component>
        <template slot-scope="props">
            <h1 ref="ele">{{ props }}</h1>
        </template>
    </v-component>
</template>
<script>
import VComponent from './v-component'
export default {
    components: { VComponent }
}
</script>

代码语言:javascript
复制
<template>
    <div>
        <slot demo="foo"></slot>
    </div>
</template>
<script>
export default {
    created() {
        this.$nextTick(function() { // lazy
            console.warn(this.$scopedSlots.default()[0].context.$refs)
        });
    }
}
</script>

结果:

票数 6
EN

Stack Overflow用户

发布于 2022-03-03 16:45:05

在Vue 2上,您可以在已挂载的

代码语言:javascript
复制
  mounted() {
    console.log(this.$slots)
  },

精度更高

你可以做到的

代码语言:javascript
复制
  mounted() {
    console.log(this.$slots.name_of_your_slot)
  },
票数 1
EN

Stack Overflow用户

发布于 2022-03-01 15:29:24

这被Vue开发人员认为是一个坏主意:https://github.com/vuejs/vue/issues/7661

顺便说一句,在我的Vue3示例中,检索到的插槽的el条目

代码语言:javascript
复制
this.$refs.myRef.$slots['my-slot']().el

始终为空(作为appContext)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52440368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档