【问题标题】:<th> as slotted node<th> 作为开槽节点
【发布时间】:2019-05-25 05:51:27
【问题描述】:

我已经定义了一个影子模板如下:

  <table id="overviewbox-loadingbox">
    <thead>
        <tr>
        <slot name="table-header"></slot>
        </tr>
    </thead>
    <tbody>
        <div id="loadingbox"></div>
    </tbody>
  </table>

用户应该通过以下方式提供自己的&lt;th&gt;s:

  <th slot="table-header" data-column_name="description">describing here</th>

但是这不起作用。只要我将&lt;th&gt; 更改为&lt;span&gt;,并且所有其他内容都保持不变,就会出现开槽节点。这是因为有一些关于一起使用 &lt;th&gt;&lt;slot&gt; 的无证怪癖吗?谢谢。

【问题讨论】:

标签: ecmascript-6 custom-element


【解决方案1】:

&lt;tr&gt;&lt;tbody&gt; 允许的孩子数量非常有限。因此,您可能无法按照您尝试做的方式做您想做的事情。

但是……

您可以使用 &lt;div&gt;&lt;span&gt; 并将它们的 CSS 设置为:

display: table-row-group;
display: table-header-group;
display: table-footer-group;
display: table-row;
display: table-cell;
display: table-column-group;
display: table-column;

那么就没有孩子的限制了。


您也可以使用较新的Customized built-in elements 范例,例如&lt;td is="my-td"&gt;&lt;/td&gt;

【讨论】:

  • 所以问题是&lt;slot&gt; 不允许在&lt;tr&gt; 中使用?那么为什么使用&lt;span&gt; 而不是&lt;th&gt; 工作呢?
  • 如果您使用&lt;div&gt;&lt;span&gt; 而不是&lt;table&gt;&lt;tbody&gt;&lt;thead&gt; 等,那么您可以在代码中放置&lt;slot&gt;。但是你必须小心不要让&lt;tr&gt;&lt;td&gt;等最终出现在&lt;slot&gt;中的孩子中
猜你喜欢
  • 2020-04-22
  • 1970-01-01
  • 2015-06-06
  • 2021-06-02
  • 1970-01-01
  • 2012-02-08
  • 2017-10-10
  • 2013-03-15
  • 1970-01-01
相关资源
最近更新 更多