elementUI 动态生成几行几列的方法示例


Posted in Javascript onJuly 11, 2019

elementUI 动态生成几行几列 table

现在碰到一个需求:就是根据用户选择的行列,来自动生成相应大小的 table,如下这个实现还不完善,因为数据不对,只是实现了动态的效果,仅是提供一种实现思路吧,后续我会再想想看怎么实现为好,先记录一下吧
直接看代码吧

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>elementUI table 动态生成列</title>
 <script src="https://cdn.jsdelivr.net/npm/vue"></script>
 <script src="https://unpkg.com/element-ui/lib/index.js"></script>
 <style type="text/css">
  @import url("https://unpkg.com/element-ui/lib/theme-chalk/index.css");
 </style>
</head>
<body>

<div id="app">

 <el-form inline>

  <!--先选择 排数-->
  <el-form-item label="请选择排" style="margin-left: 50px;">
   <el-select style="width: 100% ;" v-model="row1" placeholder="请选择排" @change="row1Change">
    <el-option v-for="item in floorNumList" :key="item.floorId"
          :value="item.floorId"></el-option>
   </el-select>
  </el-form-item>

  <!--再选择 列数-->
  <el-form-item label="请选择列">
   <el-select style="width: 100% ;" v-model="col1" placeholder="请选择列" @change="col1Change">
    <el-option v-for="item in floorNumList" :key="item.floorId"
          :value="item.floorId"></el-option>
   </el-select>
  </el-form-item>

  <el-table ref="multipleTable" :data="rowDataList1" style="width:80%; border: 2px solid red; max-height: 500px; margin-left: 30px;" highlight-current-row :cell-style="cellStyle">
   <el-table-column fixed type="selection" align="center" width="50" label="列"></el-table-column>
<!--   <el-table-column type="index" align="center" width="50" label="索引"></el-table-column>-->
   <el-table-column v-for="col in colDataList1" :prop="col.id" :label="col.id" align="center" >
    <el-table-column prop="id" align="center" >
     <template slot-scope="scope">
      <el-button @click="handleClick(scope.row, col.id, scope.$index)" class="el-icon-cherry" v-bind:style="{ color: activeColor}">></el-button>
     </template>
    </el-table-column>
   </el-table-column>
  </el-table>
 </el-form>
 </div>
</div>

<script>
 let vm = new Vue({
  el: '#app',
  data(){
   return{
    floorNumList: [
     {floorId: 1},
     {floorId: 2},
     {floorId: 3},
     {floorId: 4},
     {floorId: 5},
     {floorId: 6},
     {floorId: 7},
     {floorId: 8},
     {floorId: 9},
     {floorId: 10}
    ],
    floorNum: '',

    // 第1层 默认选择的排数 和 列数
    row1: 1,
    col1: 1,
    // 第2层 默认选择的排数 和 列数
    row2: 1,
    col2: 1,
    // 第3层 默认选择的排数 和 列数
    row3: 1,
    col3: 1,
    // 第4层 默认选择的排数 和 列数
    row4: 1,
    col4: 1,
    // 第5层 默认选择的排数 和 列数
    row5: 1,
    col5: 1,

    activeColor: 'green',

    colPos: '',
    rowPos: '',



    rowDataList1: [{ // 默认给一个对象,即默认状态是 1行数据
     id: Math.ceil(Math.random()*100)
    }],

    colDataList1: [
     {id: '1'}
    ],
   }
  },
  methods:{
   col1Change(){
    // 每触发一次,清空数据
    this.colDataList1 = [{id: '1'}];
    // 取得 选中的第一层的第一排的数值
    let len = this.col1;
    if(len > 1){
     for (let i = 2; i <= len; i++){
      this.colDataList1.push({id: i + ''});
     }
     return this.colDataList1;
    }else{
     return this.colDataList1;
    }
   },

   row1Change(){
    // 每触发一次,清空数据
    this.rowDataList1 = [{ id: Math.ceil(Math.random()*100)}];
    let len = this.row1;
    if (len > 1){
     for (let i = 2; i <= len ; i++){
      this.rowDataList1.push({id: Math.ceil(Math.random()*100) + i});
     }
     return this.rowDataList1;
    }else {
     return this.rowDataList1;
    }
   },

   handleClick(row, col, index) {
    // console.log(JSON.stringify(row));
    // console.log(JSON.stringify(col));
    // console.log("点击的cell 行数: " + JSON.stringify(index)); // index 是 行数,0 表示第一行,从 0 开始
    // 一点击获取 行纵坐标
    this.colPos = col;
    this.rowPos = index;
   },

   cellStyle({row, column, rowIndex, columnIndex}){
    // console.log(JSON.stringify(row))
    // console.log(JSON.stringify(column))
    // console.log("要渲染的行数: " + JSON.stringify(rowIndex))
    // console.log(JSON.stringify(columnIndex))

    if(rowIndex == 0 && columnIndex == 0){
     return '';
    }else {
     if(rowIndex == this.rowPos && columnIndex == this.colPos){ //指定坐标
      return 'background: pink';
     }else{
      return '';
     }
    }

   },

  }
 });
</script>
</body>
</html>

为了方便大家直接使用理解,我这里使用的脚本等都是在线链接,确保大家直接 down 下来就能运行处效果的。

效果图

elementUI 动态生成几行几列的方法示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript Scoping and Hoisting 翻译
Jul 03 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
Jun 17 Javascript
jquery ajax,ashx,json的用法总结
Feb 12 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
Jul 31 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
Aug 14 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
Mar 01 Javascript
Vue.js 2.0中select级联下拉框实例
Mar 06 Javascript
vue2.x+webpack快速搭建前端项目框架详解
Nov 30 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
使用ng-packagr打包Angular的方法示例
Sep 21 Javascript
详解js根据百度地图提供经纬度计算两点距离
May 13 Javascript
微信小程序学习之自定义滚动弹窗
Dec 20 Javascript
JS为什么说async/await是generator的语法糖详解
Jul 11 #Javascript
Vue 使用计时器实现跑马灯效果的实例代码
Jul 11 #Javascript
Vue 子组件与数据传递问题及注意事项
Jul 11 #Javascript
ES6的异步终极解决方案分享
Jul 11 #Javascript
微信小程序的开发范式BeautyWe.js入门详解
Jul 10 #Javascript
实现一个 Vue 吸顶锚点组件方法
Jul 10 #Javascript
vue webpack重写cookie路径的方法
Jul 10 #Javascript
You might like
PHP中文件上传的一个问题
2010/09/04 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
php实现的ping端口函数实例
2014/11/12 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
koa router 多文件引入的方法示例
2019/05/22 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
详细的大学生创业计划书模板
2014/01/27 职场文书
对标管理实施方案
2014/03/12 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
慈善募捐倡议书
2015/04/27 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
详解php中流行的rpc框架
2021/05/29 PHP
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js