vue的element的table封装成组件,并循环数据进行展示

这是效果图
在这里插入图片描述

1.在components文件夹下新建一个table.vue组件,代码如下

<template>
  <div class="table_box">
    <el-table
        :data="tableData"
        :border="border"
        :style="tstyle"
        :size="tsize"
        :header-cell-style="headerStyle">
        //最前面的复选框
        <el-table-column
          	v-if="check"
            type="selection"
            width="40">
        </el-table-column>
        //普通内容
        <template v-for="(item,i) in tableLabel">
       		//如果需要其他的内容,加上判断就行,前面传参数的时候加上
        	// 例:开关按钮
          <el-table-column
          v-if="item.switch"
          :prop="item.prop"
          :label="item.label"
          :width="item.width"
          :sortable="item.sort" :key="i">
            <template slot-scope="scope">
            //scope.row[item.prop] 其实是 scope.row['value'],为了灵活选择匹配类名
              <el-switch
                v-model="scope.row[item.prop]"
                @change="switchFn">
              </el-switch>
            </template>
          </el-table-column>
          //普通内容
          <el-table-column
          v-else
          :prop="item.prop"
          :label="item.label"
          :width="item.width"
          :sortable="item.sort" :key="i">
          </el-table-column>
        </template>
		//操作按钮
        <el-table-column v-if="operate" label="操作" width="200" align="center">
          <template slot-scope="scope">
                <template v-for="(item,i) in operate">
                  <el-button
                  v-if="item === 'edit'"
                  :key="i"
                  size="mini"
                  type="primary"
                  @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
                  <el-button
                  v-if="item === 'delete'"
                  :key="i"
                  size="mini"
                  type="danger"
                  @click="handleDelete(scope.$index, scope.row)">删除</el-button>
                </template>
              </template>
        </el-table-column>
    </el-table>
  </div>
</template>

数据部分

<script>
export default {
  name: 'table1',
  data () {
    return {

    }
  },
  props: {
    tableData: {
      type: [Array, Object],
      required: true
    },
    tableLabel: {
      type: [Array, Object],
      required: true
    },
    headerStyle: {
      type: [Object],
      required: false,
      default: function () {
      	//var(...):全局定义的颜色,方便修改,之前有解释的文章
        return { 'background-color': 'var(--tabtop)' }
      }
    },
    border: {
      type: [Boolean],
      required: false,
      default: true
    },
    check: {
      type: [Boolean],
      required: false,
      default: function () {
        return false
      }
    },
    operate: {
      type: [Boolean, Array],
      required: false,
      default: function () {
        return ['edit', 'delete']
      }
    },
    tstyle: {
      type: [Array, Object, String],
      required: false,
      default: function () {
        return { width: '100%' }
      }
    },
    tsize: {
      type: [String],
      required: false,
      default: function () {
        return 'mini'
      }
    }
  },
  methods: {
    handleEdit (index, row) {
      console.log(index, row)
    },
    handleDelete (index, row) {
      console.log(index, row)
    },
    switchFn (e) {
      console.log(e)
    }
  }

}

2.在需要的页面引入组件(如果闲单页面引入繁琐,前一篇文章就是全局引入组件)

参数说明
tableData表格数据,类型array(数组)(参数必填)
tableLabel表头数据,类型array(数组), (参数必填)
headerStyle表头样式,类型: obj (对象) ,默认:{‘background-color’:’#FAFAFA’}
border表格边框,类型:true/false (布尔值),默认:true
check是否带有复选框, 类型:true/false (布尔值),默认:false
operate是否带有操作按钮,类型array(数组),默认:[‘edit’,‘delete’]
tstyle表格样式,类型: obj (对象) , 默认:{ width: ‘100%’ }
tsize表格尺寸,类型:string(字符串),默认:‘mini’
<Table :tableData="tableData" :tableLabel="tableLabel" :headerStyle="{'background-color':'var(--tabtop)'}" :operate="true" check="none"></Table>
<script>
//导入组件
import Table from '@/components/Table.vue'
export default {
  data () {
    return {
      tableData: [{
        id: 1,
        name: '魔力',
        ks_id: 11,
        operation: true,
        developer: '浏览',
        project: '后台',
        product: '电脑',
        cooperation: true,
        personnel: '技术',
        remark: '一级标签'
      }, {
        id: 2,
        name: '哈哈',
        ks_id: 12,
        operation: false,
        developer: '浏览',
        project: '函数',
        product: '手机',
        cooperation: true,
        personnel: '技术',
        remark: '二级标签'
      }],
      tableLabel: [
        { label: '合作商ID', width: '', prop: 'id' },
        { label: '合作商名称', width: '', prop: 'name' },
        { label: '合作商公司', width: '', prop: 'ks_id' },
        // switch:true 是否带有开关,sort:true 排序,如果还想加别的按钮等等,就这样的写法
        { label: '合作商状态', width: '', prop: 'operation', switch: true , sort:true},
        { label: '媒体类型', width: '', prop: 'developer' },
        { label: '返点百分比', width: '', prop: 'project' },
        { label: '备注', width: '', prop: 'product' },
        { label: '创建时间', width: '', prop: 'cooperation', switch: true },
        { label: '操作', width: '', prop: 'personnel' }
      ],
    }
  }
  components:{
	Table
  }
}
</script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
element ui表格中的某一列循环是指在表格中的某一列中的数据进行循环展示。在element ui表格中,我们可以通过自定义的render函数来实现该功能。 首先,在el-table-column中设置自定义列的render函数,该函数会接收到两个参数:row 和 column。其中,row代表当前行的数据,column代表当前列的配置信息。我们可以根据具体的需求,对row中的某一列进行循环渲染。 其次,我们可以在render函数中使用v-for指令来循环渲染数据。通过v-for指令,我们可以遍历某一列中的数据,生对应的HTML元素。 最后,根据具体的需求,我们可以利用循环的HTML元素进行一些操作,比如添加样式、绑定事件等。 下面是一个示例代码,通过v-for指令实现对表格中某一列数据循环展示: ```html <template> <el-table :data="tableData"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column label="爱好"> <template slot-scope="scope"> <div v-for="item in scope.row.hobbies" :key="item"> {{ item }} </div> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', hobbies: ['篮球', '足球', '游泳'] }, { name: '李四', hobbies: ['跑步', '骑车'] }, { name: '王五', hobbies: ['唱歌', '跳舞', '书法'] } ] } } } </script> ``` 以上示例代码实现了一个element ui表格,其中"爱好"列的数据循环展示出来。每个爱好被渲染为一个div元素。最终的效果是每一行的"爱好"列都会展示出相应的爱好数据。 通过以上方法,我们可以实现element ui表格中某一列数据循环展示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值