zoukankan      html  css  js  c++  java
  • 基于iview使用jsx扩展成可编辑的表格

    <template>
    <div>
      <Table :columns="columns" :data="data"></Table>
    </div>
    </template>
    <script>
    import Vue from 'vue';
    export default {
      methods:{
        render(h,{column,index,row}){
          let value = row[column.key];
          return <div on-click={(e)=>this.changeIndex(e,index)} >
          {this.index === index? 
            <i-input type="text" value={value} on-input={(value)=>{
              this.handleChange(value,column,row)
            }} onOn-enter={()=>this.enter(row,index)}/>:
            <span>{value}</span>
          }
          </div>
        },
        enter(row,index){
          this.data.splice(index,1,row);
          this.index = -1;
        },
        handleChange(value,column,row){
          row[column['key']]= value;
        },
        changeIndex(e,index){
          this.index = index;
          this.$nextTick(()=>{
            e.currentTarget.getElementsByTagName("input")[0].focus()
          })
        }
      },
      data() {
        return {
          index:-1,
          columns: [
            {
              title: 'Name',
              key: 'name',
              render:this.render
            },
            {
              title: 'Age',
              key: 'age',
            },
            {
              title: 'Address',
              key: 'address',
            },
          ],
          data: [
            {
              name: 'John Brown',
              age: 18,
              address: 'New York No. 1 Lake Park',
              date: '2016-10-03',
            },
            {
              name: 'Jim Green',
              age: 24,
              address: 'London No. 1 Lake Park',
              date: '2016-10-01',
            },
            {
              name: 'Joe Black',
              age: 30,
              address: 'Sydney No. 1 Lake Park',
              date: '2016-10-02',
            },
            {
              name: 'Jon Snow',
              age: 26,
              address: 'Ottawa No. 2 Lake Park',
              date: '2016-10-04',
            },
          ],
        };
      },
    };
    </script>

  • 相关阅读:
    第一次参赛经历:ecfinal总结
    滑雪(dp或记忆化搜索)
    dp入门题(数塔)
    SQL语句:子查询
    【原创】SQL语句原理解析
    gitignore规则探究
    路径分隔符:正斜线/、反斜线、双反斜线\的区别
    高并发系统设计方法
    js变量作用域,变量提升和函数传参
    数据库设计:三范式
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11550754.html
Copyright © 2011-2022 走看看