2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

riot.jsで、任意の個数づつをブロッキングしてループさせる方法

Posted at

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>

まず、ループ用の変数jを使って、データをループ取り出し。
ただし、データの数をひとかたまりで表示したい数で割って、かたまりを何回ループさせるかをifに指定。

で、

tag.tag-表示部分※3毎に区切る場合
    <li each={item, i in data.slice(j*3, data.length)} if={i < 3}>
    </li>

表示するデータを、sliceを使って、jによるループで表示済みのものを切り落としつつ、iを使って取り出す。
ifを使って、ひとかたまりに表示させたいデータの個数を指定。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?