创建table实例页

views/table.vue

<template>
<h1>table page</h1>
</template>
<script>
import { getTableData } from '@/api/data'
export default {
data () {
return {
tableData: [],
columns: [
{ key: 'name', title: '姓名' },
{ key: 'age', title: '年龄', editable: true },
{ key: 'email', title: '邮箱', editable: true }
]
}
},
mounted () {
getTableData().then(res => {
this.tableData = res
})
}
}
</script>

关联路由

  {
path: 'table',
name: 'table',
component: () => import('@/views/table.vue')
}

请求接口

api/data.js

import axios from './index'

export const getTableData = () => {
return axios.request({
url: '/getTableData',
method: 'get'
})
}

模拟数据

main.js

if (process.env.NODE_ENV !== 'production') require('./mock')

mock/index.js

import Mock from 'mockjs'
import { getTableData } from './response/data' Mock.mock(/\/getTableData/, 'get', getTableData) export default Mock

mock/response/data.js

import {
doCustomTimes
} from '@/lib/tools'
import Mock from 'mockjs' export const getTableData = () => {
const template = {
name: '@name',
'age|18-25': 0,
email: '@email'
}
let arr = []
doCustomTimes(5, () => {
arr.push(Mock.mock(template))
})
}

函数封装

lib/tools.js

// 调用times次callback
export const doCustomTimes = (times, callback) => {
let i = -1
while (++i < times) {
callback()
}
}

  1. JSX进阶

  2. 单个单元格编辑表格

_c/edit-table/edit-table.vue

<template>
<Table :columns="insideColumns" :data="value"></Table>
</template> <script>
import clonedeep from 'clonedeep'
export default {
name: 'EditTable',
data () {
return {
insideColumns: [],
edittingId: '',
edittingContent: ''
}
},
props: {
columns: {
type: Array,
default: () => []
},
value: {
type: Array,
default: () => []
}
},
watch: {
columns () {
this.handleColumns()
}
},
methods: {
handleClick ({ row, index, column }) {
if (this.edittingId === `${column.key}_${index}`) {
let tableData = clonedeep(this.value)
tableData[index][column.key] = this.edittingContent
this.$emit('input', tableData)
this.$emit('on-edit', { row, index, column, newValue: this.edittingContent })
this.edittingId = ''
this.edittingContent = ''
} else {
this.edittingId = `${column.key}_${index}`
}
},
handleInput (newValue) {
this.edittingContent = newValue
},
handleColumns () {
const insideColumns = this.columns.map(item => {
if (!item.render && item.editable) {
item.render = (h, { row, index, column }) => {
const isEditting = this.edittingId === `${column.key}_${index}`
return (
<div>
{isEditting ? <i-input value={row[column.key]} style="width: 50px;" on-input={this.handleInput}></i-input> : <span>{row[column.key]}</span>}
<i-button on-click={this.handleClick.bind(this, { row, index, column })}>{ isEditting ? '保存' : '编辑' }</i-button>
</div>
)
}
return item
} else return item
})
this.insideColumns = insideColumns
}
},
mounted () {
this.handleColumns()
}
}
</script>
  1. 多单元格编辑表格

    ToDo

Vue iview可编辑表格的实现的更多相关文章

  1. vue & iview

    vue & iview ui components https://codepen.io/webgeeker/pen/EJmQxQ https://www.iviewui.com/docs/g ...

  2. vue+element-ui+slot-scope或原生实现可编辑表格(日历)

    你们公司的产品是不是还在做一个可编辑表格功能? 1.前言 咱开发拿到需求大多数是去网上找成型的组件,找不到再看原生的方法能否实现,大牛除外哈,大牛一般喜欢封装组件框架. 2.思路 可编辑表格在后台管理 ...

  3. Vue + iview框架,搭建项目遇到的相关问题记录 - 国际化router.js不能实现

    例子展示: 概述: 最近在使用vue + iview框架进行web开发,并且有一个需求,需要实现web端的国际化,在完成相关配置文件后,发现router.js 中无法配置,并且会出现异常,在经过百度找 ...

  4. [HTML]HTML5实现可编辑表格

    HTML5实现的简单的可编辑表格 [HTML]代码 <!DOCTYPE html > <html > <head> <meta charset="u ...

  5. Jqgrid入门-使用模态对话框编辑表格数据(三)

            Jqgrid是一个强大的表格插件,它提供了多种方式来编辑数据.这三种方式分别是: Cell Editing——只允许修改某一个单元格内容 Inline Editing——允许在jqGr ...

  6. ExtJS4.2学习(七)EditorGrid可编辑表格(转)

    鸣谢地址:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-14/176.html ------------- ...

  7. jQuery实现可编辑表格

    在很多的网页中,这个可编辑表格在许多地方都是非常有用,配合上AJAX技术能够实现很好的用户体验,下面我 们就jQuery来说明一下可编辑表格的实现步骤 首先是HTML代码,非常简单 <!DOCT ...

  8. thinkphp5+vue+iview商城 公众号+小程序更新版本

    thinkphp5+vue+iview商城加分销 源码下载地址:http://github.crmeb.net/u/crmeb 演示站后台:http://demo25.crmeb.net 账号:dem ...

  9. .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片

    .NET压缩图片保存   需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用 ...

随机推荐

  1. hbase运行流程图

    hbase运行流程图

  2. java多线程之消费生产模型

    需求:要求仓库最大容量为4,且一共只生产20台电视机,下面的代码只适用于一个生产者一个消费者,有没有大佬提点建议怎么改成一对多或多对多不会出现死锁情况 class Warehouse { privat ...

  3. Project ACRN documentation

    Project ACRN documentation https://projectacrn.github.io/latest/index.html Virtio devices high-level ...

  4. 虚拟化技术之kvm镜像模板制作工具virt-sysprep

    virt-sysprep这个工具来自libguest-tools这个工具包,它能够把kvm虚拟机对应的磁盘文件做成一个模板,后续我们启动虚拟机就可以基于这个镜像模板启动:什么是镜像模板呢?所谓模板就是 ...

  5. 计算机网络-网络层(2)NAT协议

    网络地址转换(NAT,Network Address Translation)协议: 本地网络内通信的IP数据报的源与目的IP地址均在子网10.0.0.0/24内:所有离开本地网络去往Internet ...

  6. 小案例-WebSocket实现简易聊天室

    前言 在详解 HTTP系列之一讲到HTTP/2.0 突破了传统的"请求-问答模式"这一局限,实现了服务器主动向客户端传送数据.而本章将通过一种在单个TCP连接上进行全双工通信的协议 ...

  7. 什么是PR劫持和权重劫持

    http://www.wocaoseo.com/thread-265-1-1.html PR劫持OR网站权重劫持虽然概念不一样,但是其原理是一样的,同样属于seo中的灰色手段,是我们抵制和反对的seo ...

  8. SEO需要分析哪些网站数据

    http://www.wocaoseo.com/thread-227-1-1.html 一.网站的基本数据 1.网站流量详情(ip.pv.需要看pv与ip的比) 2.网站的跳出率(可以看出一个网站的用 ...

  9. 使用intellij IDEA远程连接服务器部署项目

    由于不想每次打开上传的文件软件,故研究使用intellij IDEA集成 ,下面是我使用的过程的一些记录. 使用intellij 远程连接服务器连接Linux服务器部署项目,方便我们开发测试. 本人使 ...

  10. 小程序商城系统CRMEB Pro v1.1全新重构,新增DIY功能

    CRMEB ProV1.1全新升级发布,真正实现了后台可自由拖拽组合实现首页布局的DIY功能,这一功能的实现,将告别过去千篇一律的同质化界面布局,真正实现个性化.高自由的随心组合.本次发布的版本中我们 ...