vue 创建一个 表格,横向纵向都可以增加(减少)行和列,并且内容内容可以输入,标题可以修改

工作中有需要,就写下记录下(因为只是写了个demo,实际中没有用就先这样记录下,很喜欢写这种需求)

效果图

我的预览地址:https://rainning_z.gitee.io/table_from_add/index.html

我的码云源码:https://gitee.com/rainning_z/table_from_add.git

直接源码

<template>
  <div>
    <h1>demo11</h1>
    <div style="text-align: left">
       <div v-for="(item, i) in formTitle" style=";width: 100px ;display: inline-block;height: 50px;position: relative" >
         <input type="text" v-model="formTitle[i]"  @input="changeTitle($event,i)" style=";width: 100px ;display: inline-block;height: 50px">
         <img style="width: 20px;height: 20px;position: absolute;top: 0px;right: 0px; "
                :src="delet" @click="deleteTitle(i)"/>
    </div>
      <button style="width: 50px ;display: inline-block;font-size: 30px; " @click="addCloumn">
        +
      </button>
      <div v-for="(item, i) in formData" style="display: flex;">
         <div v-for="(ite, index) in formTitle" style="position: relative;width: 100px ;display: inline-block;height: 50px; ">
                    <input type="text" v-model="formData[i][index]"  @input="changeData($event,i,index)"
                           style="width: 100px ;display: inline-block;height: 50px">
                 <img v-if="index==0" style="width: 20px;height: 20px;position: absolute;top: 0px;right: 0px; "
                      :src="delet" @click="deleteData(i,index)"/>
        </div>
      </div>
      <button @click="addRow" style="width: 50px ;display: inline-block;font-size: 30px; ">
        +
      </button>
    </div>
  </div>
</template>
<script>

  export default {

    data() {
      return {
        delet: require('./image/delet.png'),
        formTitle: ['name', 'sex', 'age'],
        formData: [[ "tom",  '男',  12], [ "lili", '女' , 14]],
        tableData: {
          formData: this.formData,
          formTitle: this.formTitle
        },
      }
    },
    mounted() {
    },
    methods: {
      deleteTitle(i){
        this.formTitle.splice(i,1)
        this.formData.forEach(item=>{
          item.splice(i,1)
        })
      },
      deleteData(i){
        this.formData.splice(i,1)

      },
      changeTitle(event, i) {
        this.formTitle.splice(i,1,event.currentTarget.value)
      },
      changeData(event, i,index) {
        let data=this.formData[i]
        data[index]=event.currentTarget.value;
        this.formData.splice(i,1,data)
      },
      addCloumn() {
        this.formTitle.push("请输入标题")
      },
      addRow() {
        this.formData.push({})
      }
    }
  };
</script>

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值