riot.jsで、任意の個数づつをブロッキングしてループさせる方法
riot.jsを利用して、ずらーっと続くデータをx個ごと区切って表示したく、それにハマったので、解決策をメモ。
完成させたい構造
html
<ul>
<li><p>data-01</p></li>
<li><p>data-02</p></li>
<li><p>data-03</p></li>
</ul>
<ul>
<li><p>data-04</p></li>
<li><p>data-05</p></li>
<li><p>data-06</p></li>
</ul>
<ul>
<li><p>data-07</p></li>
<li><p>data-08</p></li>
<li><p>data-09</p></li>
</ul>
実際書いたもの
tag.tag-データ部分
this.data= [
{title: data-01},
{title: data-02},
{title: data-03},
{title: data-04},
{title: data-05},
...
{title: data-09}
]
tag.tag-表示部分※3毎に区切る場合
<ul class="wp" each={block, j in list} if={j < data.length/3}>
<li each={item, i in data.slice(j*3, data.length)} if={i < 3}>
<p>{item.title}</p>
</li>
</ul>
なにをしてるの?
tag.tag-表示部分※3毎に区切る場合
<ul class="wp" each={block, j in list} if={j < data.length/3}>
</ul>
html
<ul>
<li><p>data-01</p></li>
<li><p>data-02</p></li>
<li><p>data-03</p></li>
</ul>
<ul>
<li><p>data-04</p></li>
<li><p>data-05</p></li>
<li><p>data-06</p></li>
</ul>
<ul>
<li><p>data-07</p></li>
<li><p>data-08</p></li>
<li><p>data-09</p></li>
</ul>
tag.tag-データ部分
this.data= [
{title: data-01},
{title: data-02},
{title: data-03},
{title: data-04},
{title: data-05},
...
{title: data-09}
]
tag.tag-表示部分※3毎に区切る場合
<ul class="wp" each={block, j in list} if={j < data.length/3}>
<li each={item, i in data.slice(j*3, data.length)} if={i < 3}>
<p>{item.title}</p>
</li>
</ul>
なにをしてるの?
tag.tag-表示部分※3毎に区切る場合
<ul class="wp" each={block, j in list} if={j < data.length/3}>
</ul>
まず、ループ用の変数jを使って、データをループ取り出し。
ただし、データの数をひとかたまりで表示したい数で割って、かたまりを何回ループさせるかをifに指定。
で、
tag.tag-表示部分※3毎に区切る場合
<li each={item, i in data.slice(j*3, data.length)} if={i < 3}>
</li>
表示するデータを、sliceを使って、jによるループで表示済みのものを切り落としつつ、iを使って取り出す。
ifを使って、ひとかたまりに表示させたいデータの個数を指定。
参考
Author And Source
この問題について(riot.jsで、任意の個数づつをブロッキングしてループさせる方法), 我々は、より多くの情報をここで見つけました https://qiita.com/niever66/items/f9d07ab2ca557c79607c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .