javascript - Vue.js 中内容分布的表未正确渲染

标签 javascript vue.js

我正在尝试创建一个几乎只是一个表格的组件并使用 content distribution在其中添加元素。

但由于某种原因,我的槽元素在表格之前呈现,所以我可能做错了什么。

这是根应用程序模板:

<div id="app">
  <my-comp>
    <row-comp></row-comp>
    <row-comp></row-comp>
  </my-comp>
</div>

这些是我的组件声明:

new Vue({
  el: '#app',
  components: {
    'my-comp': {
      template: '\
        <table> \
          <thead> \
          <tr> \
            <th>header</th> \
          </tr> \
        </thead> \
        <tbody> \
          <tr> \
            <td>parent row</td> \
          <tr> \
          <slot></slot> \
        </tbody> \
      </table>'
    },

    'row-comp': {
      template: '<tr><td>content</td></tr>'
    }
  }
})

这是 jsfiddle: https://jsfiddle.net/vxc0o3mf/

谢谢。

最佳答案

<table>不能包含 <tr> 以外的任何元素和其他特定于表的元素,因此在渲染您的 <slot> 时立即被移出表。这是一个很难解决的问题,基本上你必须使用合法的表元素 is="component"添加组件的属性:

<div id="app">
  <table>
    <thead is="header-comp"></thead>
    <tr is="row-comp"></tr>
  </table>
</div>

然后:

new Vue({
    el: '#app',
  components: {
    'row-comp': {
        template: '<tr><td>content</td></tr>'
    },
    'header-comp': {
      template:'<thead><tr><th>header</th></tr></thead>'
    }
  }
})

fiddle :https://jsfiddle.net/vxc0o3mf/2/

我知道这没有您正在寻找的全部功能,但您不能使用 <slot>带表格:(

关于javascript - Vue.js 中内容分布的表未正确渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36038369/

相关文章:

javascript - 未调用 componentDidMount

javascript - 我需要运行两个查询

javascript - 绘制的多边形不显示在 openlayers 中

javascript - Vue发送邮件

javascript - 使用 javascript 单击按钮

javascript - WooCommerce 结帐页面中的淡出验证错误消息

javascript - 在子 vue 组件数据函数中访问 props?

javascript - 使用 Vuejs 求两个数字之和的按钮函数

javascript - 如何在 IE-8 Javascript 的函数体中绑定(bind) "this"?

vue.js - 在 Vuetify 中的两个图标之间留出空间