首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Vue2中的某些子元素之后插槽停止

在Vue2中的某些子元素之后插槽停止
EN

Stack Overflow用户
提问于 2022-02-06 08:38:12
回答 1查看 82关注 0票数 1

我有两个简单的vue组件,并希望在另一个的默认插槽中使用一个。出于某种原因,它只使用第一个元素,但在此之后没有显示任何内容。如果我把标准放在这个第一个元素之前,它就会显示正常,但是如果我把它放在后面,也不会显示出来。

这一页:

代码语言:javascript
复制
<div id="app">
    <v-app>
        <v-main>
            <gantt-chart>
                <div> this is visible </div>
                <gantt-row key="1" title="test 1"/> 
                <div> nothing of this and beyond is shown</div>
                <gantt-row key="2" title="test 2"/> 
                <gantt-row key="3" title="test 3"/> 
            </gantt-chart>
        </v-main>
    </v-app>
</div>
<script type="text/javascript">
    Vue.component("gantt-chart", httpVueLoader('/plugin_assets/javascripts/components/GanttChart.vue'));
    Vue.component("gantt-row", httpVueLoader('/plugin_assets/javascripts/components/GanttRow.vue'));
    var app = new Vue({
        el: '#app',
    })
</script> 

甘特-图表.:

代码语言:javascript
复制
<template>
    <div>
      <slot />
    </div>
</template>

<script>
module.exports = {
  props: [],
  name:"GanttChart",
  data() {
    return {};
  },
  computed: {},
  methods: {},
};
</script>

<style scoped></style>

甘特-罗。

代码语言:javascript
复制
<template>
    <div>
      {{ title }}
    </div>
</template>

<script>
module.exports = {
  props: ["title"],
  name:"GanttRow",
  data() {
    return {};
  },
  computed: {},
  methods: {},
};
</script>

<style scoped></style>

结果:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-06 09:24:47

DOM模板的一个注意事项是,自定义元素不能自动关闭。DOM解析器可以看到<gantt-row />,但只将其视为开始标记。由于该标记在技术上尚未关闭,因此它将以下元素包装为子元素。GanttRow.vue的模板没有<slot>,所以嵌套的元素是不可见的,所有这些都发生在脚本阶段之前(在Vue接收DOM进行模板处理之前)。

例如,运行下面的代码片段,并检查生成的文档:

代码语言:javascript
复制
<div> this is visible </div>
<gantt-row key="1" title="test 1"/>
<div> nothing of this and beyond is shown</div>
<gantt-row key="2" title="test 2"/>
<gantt-row key="3" title="test 3"/>

你会注意到这会变成:

代码语言:javascript
复制
<div> this is visible </div>
<gantt-row key="1" title="test 1">
  <div> nothing of this and beyond is shown</div>
  <gantt-row key="2" title="test 2">
    <gantt-row key="3" title="test 3">
      <script type="text/javascript"></script>
    </gantt-row>
  </gantt-row>
</gantt-row>

如果您希望继续使用in-DOM模板,请为Vue组件使用一个正常的结束标记:

代码语言:javascript
复制
<gantt-chart>
  <div> this is visible </div>           
  <gantt-row key="1" title="test 1"></gantt-row>
  <div> everything below is also shown now </div>
                                         
  <gantt-row key="2" title="test 2"></gantt-row>
                                         
  <gantt-row key="3" title="test 3"></gantt-row>
</gantt-chart>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71005472

复制
相关文章

相似问题

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