Riot.js 中每个项目的多个元素
Multiple elements per single item in Riot.js
如果没有 each
属性的容器元素,如何为每个单个项目创建多个元素?
更具体地说,假设我想创建一个具有如下预期结构的定义列表:
<dl>
<dt>Key1</dt>
<dd>Value1</dd>
<dt>Key2</dt>
<dd>Value2</dd>
</dl>
所以,基本上我想做类似
的事情
<dl>
<each each="{ item in data }">
<dt>{ item.id }</dt>
<dd>{ item.name }</dd>
</each>
</dl>
但是在结果 HTML 中省略了 each
元素以使其有效 HTML。
请注意,Riot 中不存在这样的 each
标签。
更新: 似乎特别是对于 tbody > each > tr
组合,我上面描述的解决方案可以工作 - 空 each
元素被移动到里面的table和tr
直接在tbody
下面。但是,上下文存在问题 - tr
s 无法访问 item
变量,这使得这种情况变得无用。
如果不在单元格中嵌套元素,很难做到这一点。用 ul 和 li 这样做不是更容易吗,比如:
<ul each="{ opts.data }">
<li>{ id }</li>
<li>{ name }</li>
<li>{ description }</li>
</ul>
并在您的样式表中使用类似这样的内容:
li {
display: inline-block;
}
li:nth-child(3) {
display: table-row;
}
这里是一个使用 RiotJS 的演示:http://jsfiddle.net/rvanzon/3c8jjzw4/4/
目前看来这是不可能的 - 直到实现删除父自定义标签的可能性。
这已通过 <virtual>
元素解决,您应该使用:
<virtual each="{ item in data }">
<dt>{ item.id }</dt>
<dd>{ item.name }</dd>
</virtual>
如果没有 each
属性的容器元素,如何为每个单个项目创建多个元素?
更具体地说,假设我想创建一个具有如下预期结构的定义列表:
<dl>
<dt>Key1</dt>
<dd>Value1</dd>
<dt>Key2</dt>
<dd>Value2</dd>
</dl>
所以,基本上我想做类似
的事情<dl>
<each each="{ item in data }">
<dt>{ item.id }</dt>
<dd>{ item.name }</dd>
</each>
</dl>
但是在结果 HTML 中省略了 each
元素以使其有效 HTML。
请注意,Riot 中不存在这样的 each
标签。
更新: 似乎特别是对于 tbody > each > tr
组合,我上面描述的解决方案可以工作 - 空 each
元素被移动到里面的table和tr
直接在tbody
下面。但是,上下文存在问题 - tr
s 无法访问 item
变量,这使得这种情况变得无用。
如果不在单元格中嵌套元素,很难做到这一点。用 ul 和 li 这样做不是更容易吗,比如:
<ul each="{ opts.data }">
<li>{ id }</li>
<li>{ name }</li>
<li>{ description }</li>
</ul>
并在您的样式表中使用类似这样的内容:
li {
display: inline-block;
}
li:nth-child(3) {
display: table-row;
}
这里是一个使用 RiotJS 的演示:http://jsfiddle.net/rvanzon/3c8jjzw4/4/
目前看来这是不可能的 - 直到实现删除父自定义标签的可能性。
这已通过 <virtual>
元素解决,您应该使用:
<virtual each="{ item in data }">
<dt>{ item.id }</dt>
<dd>{ item.name }</dd>
</virtual>