Reputation: 13192
I get reference from here : https://bootstrap-vue.js.org/docs/components/layout#columns-b-col
So I want to make 5 column in 1 row
My script like this :
<template>
...
<b-row>
<b-col cols v-for="club in clubs">
{{club.name}}
</b-col>
</b-row>
...
</template>
<script>
export default {
data () {
return{
clubs: [
{id:1, name:'chelsea'},
{id:2, name:'liverpool'},
{id:3, name:'mu'},
{id:4, name:'city'},
{id:5, name:'arsenal'},
{id:6, name:'tottenham'},
{id:7, name:'juventus'},
{id:8, name:'madrid'},
{id:9, name:'barcelona'},
{id:10, name:'psg'}
]
}
},
...
}
</script>
The result is there exist 10 column in 1 row
I want make the tag like this :
<b-row>
<b-col cols>
chelsea
</b-col>
<b-col cols>
liverpool
</b-col>
<b-col cols>
mu
</b-col>
<b-col cols>
city
</b-col>
<b-col cols>
arsenal
</b-col>
</b-row>
<b-row>
<b-col cols>
tottenham
</b-col>
<b-col cols>
juventus
</b-col>
<b-col cols>
madrid
</b-col>
<b-col cols>
barcelona
</b-col>
<b-col cols>
psg
</b-col>
</b-row>
If the tag like that, it will display 5 column in 1 row
My problem is how can I implement it in the loop?
Upvotes: 0
Views: 1358
Reputation: 5584
Make a computed property:
{
...
computed: {
formattedClubs() {
return this.clubs.reduce((c, n, i) => {
if (i % 5 === 0) c.push([]);
c[c.length - 1].push(n);
return c;
}, []);
}
}
}
then
<b-row v-for="row in formattedClubs">
<b-col cols v-for="club in row">
{{club.name}}
</b-col>
</b-row>
Upvotes: 2