首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Vue中将插槽数据作为变量获取?

在Vue中将插槽数据作为变量获取?
EN

Stack Overflow用户
提问于 2020-08-15 21:23:35
回答 1查看 2.9K关注 0票数 2

我有一个只接受v-model="code"代码的组件(prism-editor)。这意味着,代码必须通过code发送到组件

Code.vue

代码语言:javascript
复制
<template>
  <prism-editor class="my-editor" v-model="code" 
    :highlight="highlighter" :line-numbers="numbers"/>
</template>

<script>  
  import { PrismEditor } from 'vue-prism-editor';

  export default {
    components: {
      PrismEditor,
    },
    data: () => ({
        code: this.$slots,
        numbers: true
    }),
  }
</script>

我想从一个插槽中绑定一个名为Code的父组件:

Page.vue

代码语言:javascript
复制
<template>
    <code language="c">
        int main() {
            printf('Hello World!');
        }
    </code>
<template>

<script>
  import Code from 'code.vue'
  export default {
    components: {
      'code': Code
    }
  }
</script>

在我的Code组件中,我必须找到一种方法来获取插槽数据,并将其直接传递给要发送给v-model='code'code变量。不幸的是,下面的代码不起作用,因为我不知道如何从父slot中获取数据

代码语言:javascript
复制
data: () => ({
    code: this.$slots // Which obviously doesn't work...
})

换句话说,我只想获得在code标记内发送的所有原始内容:

代码语言:javascript
复制
<code>all this content...</code>`

这个是可能的吗?

代码语言:javascript
复制
.
├── Code.vue
└── Page.vue
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-15 22:36:13

一个很好的问题,为了解决这个问题,您必须在Vuejs下面的一层,并使用DOM [read more here]中的textContent属性

有了这个属性,您就可以访问DOM元素中的内容,所以在本例中应该是这样的:

代码语言:javascript
复制
/*
 * Template
 */
<div ref="mySlot">
  <slot></slot>
</div>

/*
 * Javascript
 */
this.$refs.mySlot.textContent;

我在Codesandbox中为您设置了一个很好的示例:

https://codesandbox.io/s/gallant-resonance-7unn2?file=/src/components/Code.vue

对于未来的挑战:

总是试着看看你是否能用纯Javascript解决这个问题。快乐的编码伙伴;

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

https://stackoverflow.com/questions/63426511

复制
相关文章

相似问题

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