iview实现table的可编辑

遇到同事请教的这个问题,没接触过iview,以为和element一样,只需要在table-column中使用作用域插槽即可,简单又方便,结果发现它居然是用reder函数进行渲染的,so,仔细琢磨一下,写了下面的demo,希望对大家有用。

效果:

 

代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="http://unpkg.com/iview/dist/styles/iview.css">
    <script type="text/javascript" src="http://vuejs.org/js/vue.min.js"></script>
    <script type="text/javascript" src="http://unpkg.com/iview/dist/iview.min.js"></script>
</head>
<body>

<div id="app">
    <i-table  border :columns="columns2" :data="data3"></i-table>
</div>

<script>
    
  var app = new Vue({
      el: '#app',
      data () {
        return {
                columns2: [
                     {
                        title: 'Name',
                        key: 'name'
                    },
                    {
                        title: 'Age',
                        key: 'age',
                           render: (h, params) => {

                            if (params.row.$isEdit) {
                            
                              return h('input', {

                                domProps: {
                                  value: params.row.age
                                },
                                on: {
                                  input: function (event) {
                                    params.row.age = event.target.value
                                  }
                                }
                              });
                            } else  {
                              
                              return h('div', params.row.age);
                            }
                        }
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    },
                    {
                        title: 'Action',
                        key: 'action',
                        render: (h, params) => {
                            return h('Button', {
                                    props: {
                                        type: 'text',
                                        size: 'small'
                                    },
                                    on: {
                                      click: () => {
                                        if (params.row.$isEdit) {
                                          this.handleSave(params.row)
                                        } else {
                                          this.handleEdit(params.row)
                                        }
                                      }
                                    }
                                }, params.row.$isEdit ? '保存' : '编辑')
                        }
                    }
                ],
                data3: [
                    {
                        name: '哈哈',
                        age: 18,
                        address: '上海',
                        $isEdit: false
                    },
                    {
                        name: '啦啦',
                        age: 24,
                        address: '北京',
                        $isEdit: false
                    }
                ]
              }
      },
        methods: {
            handleEdit (row) {
               this.$set(row, '$isEdit', true)
              
            }, 
            handleSave (row) {
              this.$set(row, '$isEdit', false)
            }
}
    })
</script>
</body>
</html>

 

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
要在iview table的行编辑实现文件上传,您可以按照以下步骤进行操作: 1. 首先,在您的iview table中创建一个列,用于显示文件上传的按钮。您可以使用`slot-scope`来自定义列的内容,示例如下: ```html <template slot-scope="{ row }"> <Upload action="/your-upload-url" :on-success="handleSuccess" :on-error="handleError" :before-upload="beforeUpload" > <Button icon="ios-cloud-upload-outline">上传文件</Button> </Upload> </template> ``` 2. 在data中定义一个变量,用于存储上传成功后的文件链接。例如: ```javascript data() { return { fileList: [] }; }, ``` 3. 实现上传成功和失败的回调函数`handleSuccess`和`handleError`,以及上传前的钩子函数`beforeUpload`。示例如下: ```javascript methods: { handleSuccess(response, file, fileList) { // 上传成功后的处理逻辑 // 可以将文件链接存储到fileList中或者其他地方 this.fileList = fileList; }, handleError(error, file, fileList) { // 上传失败后的处理逻辑 console.log('上传失败:', error); }, beforeUpload(file) { // 可以在这里对上传的文件进行限制,比如大小、类型等 // 返回 false 可以阻止上传 console.log('准备上传:', file); } }, ``` 4. 最后,在您的iview table中的列配置中,将刚刚创建的列添加到需要编辑的行中。示例如下: ```html <Table :data="yourData"> <Table-column prop="yourProp" label="您的属性"></Table-column> <Table-column label="文件上传"> <template slot-scope="{ row }"> <!-- 文件上传列 --> </template> </Table-column> <!-- 其他列配置 --> </Table> ``` 通过以上步骤,您就可以在iview table的行编辑实现文件上传功能了。当用户点击上传按钮时,会触发文件上传操作,并在上传成功后将文件链接存储到`fileList`中。您可以根据实际需求进行进一步处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值