关于 v-for 写逢三换行的问题..

2019-07-26 10:19:56 +08:00
 TomatoYuyuko

正常写没啥问题,但要命的是原来的结构是用 element-ui 的栅格写的, 结构是每一行一个 el-row 套 3 个 item,总计 20 多个 item 要遍历上去,逢三换行。 这种情况怎么写,,, 是原来的需求变动了才要改的,,尽可能不要改太多

2951 次点击
所在节点    问与答
8 条回复
xwbz2018
2019-07-26 10:23:49 +08:00
if 下标 != 0 && 下标 /3==0 {换行},是这个意思嘛
TomatoYuyuko
2019-07-26 10:33:26 +08:00
@xwbz2018 #1 正常是这么写的,但是每一行的 item 们都被套在一个 el-row 标签里,
xwbz2018
2019-07-26 10:39:56 +08:00
@TomatoYuyuko #2 数据格式化一下,一维转二维,[[{}, {}, {}], [{}, {}, {}]]这样
TomatoYuyuko
2019-07-26 10:45:58 +08:00
@xwbz2018 #3 对哦,我忘了可以从数据格式下手,谢谢
nannanziyu
2019-07-26 10:56:56 +08:00
const list = [0,1,2,3,4,5,6,7,8,9,10,11,12];
list.reduce((rv,x)=>{ if(rv.idx % 3 === 0) { rv.group.push([x]); } else { rv.group[rv.group.length - 1].push(x); } ; rv.idx++; return rv;},{idx:0, group:[]}).group
用上面这一行来 group 你的数据源
然后 v-for 这个二元数组
xwbz2018
2019-07-26 10:58:52 +08:00
@TomatoYuyuko #4 不用谢,不过刚刚试了不改数据用两个循环的方式,可以看下
list: [{id:1, name:"test1"}]

<tr v-for="(d, i) in list" v-if="i==0||i%3==0">
<td v-for="n in 3">[{{list[i+n-1].id}}]{{list[i+n-1].name}}</td>
</tr>
redbuck
2019-07-26 17:49:53 +08:00
el-col 设置 span=8 不行吗?
TomatoYuyuko
2019-07-26 17:55:27 +08:00
@redbuck #7 不是这个问题,6 楼那个解法思路是最直接了当的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/586330

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX