实现布局数据渲染以列为单位

1、应用场景,就是鼠标换过同一个列的时候,显示不同的样式,正常都是同一行加颜色(类el-table)

实现方法:

在data里面定义需要循环的类字段,然后对这个数据结构进行循环出所需要的列数,进而在进行列里面的相应的数据读取,一层for循环所需要的列字段,一层循环每个列里面的数据

data里面定义

 

columnList: ['gold', 'silver', 'bronze', 'total', 'rank'],

 

视图

            <ul class="list medal-list" v-show="!showDetail">
                <li
                    class="table-item"
                    :class="[`col${index+1}`,{'active-bg':index===soft+1}]"
                    v-for="(attrItem,index) in columnList"
                    :key="index"
                >
                    <div
                        class="cell-item"
                        v-for="(item,dataIndex) in tableData"
                        :key="dataIndex"
                    >
                        <span v-if="attrItem==='goldRank'" :class="{'blue': item.goldRank<4}">{{item.goldRank}}</span>
                            <span class="org" v-else-if="attrItem==='orgName'">
                                <span class="nation-img">
                                    <img width="50" :src="`/org/${item.org}.png`" :onerror='defaultOrgImg' alt="">
                                </span>
                                <span class="nation-name">{{ item.orgName }}</span>
                            </span>
                        <span v-else-if="attrItem==='gold'||attrItem==='silver'||attrItem==='bronze'">{{item[attrItem].total}}</span>
                        <span v-else>{{item[attrItem]}}</span>
                    </div>
                </li>
            </ul>

 

posted @ 2020-10-30 15:19  心向阳  阅读(145)  评论(0编辑  收藏  举报