create at: 2019-02-20
组件
<i-table highlight-row ref="currentRowTable" :columns="columns" :data="tableData"></i-table>
完成体式格局:
- 纪录当前须要编辑的列的id,默以为空
- 须要编辑的列与当前须要编辑的id举行婚配,胜利则将该列衬着为包括input标签组件,并绑定input事宜
数据处理
export default {
data () {
return {
currentId: '',
currentScore: '',
columns: [
{ title: '称号', key: 'name', align: 'center' },
{
title: '班级',
align: 'center',
render: (h, p) => {
const { id, score } = p.row
const inp = h('input', {
style: {
width: '30%',
padding: '4px 2px',
borderRadius: '4px',
border: '1px solid #e9eaec',
textAlign: 'center'
},
attrs: {
maxlength: 16
},
domProps: {
value: score
},
on: {
input: (event) => {
this.currentScore = event.target.value
}
}
})
return this.currentId === p.row.id ? inp : h('span', score)
}
},
{
title: '操纵',
align: 'center',
render: (h, p) => {
const { currentId } = this
const { id } = p.row
const btnEdit = h('i-button', {
on: {
click: () => {
this.currentId = id
}
}
}, '编辑')
const btnSaveCancel = [
h('i-button', {
on: {
click: () => {
this.handleSave(id)
}
}
}, '保留'),
h('i-button', {
on: {
click: () => {
this.currentId = ''
this.currentScore = ''
}
}
}, '作废')]
return currentId === id ? h('div', btnSaveCancel) : btnEdit
}
}
],
tableData: [
{ id: 1, name: 1, score: 1 },
{ id: 2, name: 2, score: 2 }]
}
},
methods: {
handleSave (id) {
const {currentScore, tableData} = this
this.tableData = tableData.map(v => {
return v.id === id ? { ...v, score: currentScore } : v
})
this.currentId = ''
this.currentScore = ''
}
}
}
注重: 假如采纳的是在 head 标签中引入 iView,该要领在项目中会失效;经由过程编译开辟的项目可行;
迎接交换
Github