riotjs在表外呈现嵌套标签行

时间:2016-06-08 15:14:50

标签: javascript html riot.js

请参阅此fiddle

有一个父<table>个html标记和嵌套的自定义防暴标记来构建该行。

在检查生成的标记时,测试行将在表格的外部呈现。

如果我以这种方式使用嵌套的<div />,它会按照我的预期呈现 - 元素的子元素。这是设计的吗?或者渲染在内部使用html表的方式的怪癖?

2 个答案:

答案 0 :(得分:1)

对我来说似乎是一个错误,即使你使用最新的防暴版2.4.1,你的testrow也不会在table元素中呈现。

如果您将testrow包裹在div

<div>
  <testrow></testrow>
</div>

...它应该呈现:

<div>
  <testrow><tr> <td>1</td> </tr></testrow>
</div>

我建议开一个新的issue

更新

quirk ,您的渲染结果只是无效的标记。 Riot 2.3.17引入了新的data-is - 属性,可以解析您的issue

<table>
  <tbody data-is="testrow"></tbody>
</table>

https://jsfiddle.net/v5ytp918/4/

特提示

要检查您的标记的有效性/正确性,只需将您的防暴标记包装在template标记中并检查其innerHTML

https://jsfiddle.net/aebo6zpg/

答案 1 :(得分:0)

  

如果我以这种方式使用嵌套s,它会按照我的预期呈现 - 元素的子元素。这是设计的吗?或者渲染在内部使用html表的方式的怪癖?

最近花了我两个小时。问题的根本原因在于表格&#39;表格它的特殊之处在于它定义了自己的formatting context,并且TR之外不存在TR。 虽然riot认为组件和构建他们的虚拟DOM没有依赖关系(除了用户明确声明的那些)。 This说明了问题:

> let el = document.createElement('div')
> el.innerHTML = "<tr><td>foo</td><td>bar</td></tr>"
> el.innerHTML
"foobar"

=&GT;你不能独立渲染TR。

我没有发现任何这样的问题,顺便说一句,这是你必须处理yckart已经给出的解决方法(?)的唯一问题。 alternative solution将使用CSS顺便说一句,让CSS将嵌套的div结构直观地呈现到表中:

You can also use CSS to emulate tables if you need to. display: table display: table-row display: table-cell