今天在用element UI表格table组件时,要实现一个这样的场景,双击表格单元格变成输入框可编辑,编辑完失去焦点后还原成表格单元格显示。
下面www.uihtm.com小编来教大家如果实现element UI表格table组件实现可编辑。
思想:
1.element UI表格table组件列使用scope自定义模板。
2.双击事件绑定单元格,循环中的这条数据标识为true, 模板判断显示input输入框
3.自定义v-focus指令自动聚集focus在输入框里,输入框绑定blur事件,把当前数据标识变为false,这时输入框会隐藏。
先来看一下效果图:

具体element UI表格table组件双击编辑实现代码:
<el-table :data="adjustTableData" height="400" :stripe="true" border show-summary :summary-method="getSummaries"
sum-text="Total" style="width: 100%" @row-dblclick="dblclickRow" >
<el-table-column prop="type" label="类型"></el-table-column>
<el-table-column prop="name" width="280" label="名称"></el-table-column>
<el-table-column prop="amount" label="金额">
<template slot-scope="scope">
{{scope.row.amount}}
</template>
</el-table-column>
<el-table-column prop="price" label="利润">
<template slot-scope="scope">
<el-input v-focus v-if="scope.row.Show" size="small" v-model="scope.row.price" @keyup.enter.native="onBlur(scope.row, scope.column)" @blur="onBlur(scope.row, scope.column)" @input="getTotal"></el-input>
<span v-else>{{scope.row.price}}</span>
</template>
</el-table-column>
<el-table-column prop="CostAmount" label="Cost Amount">
<template slot-scope="scope">
{{scope.row.CostAmount}}
</template>
</el-table-column>
</el-table>
var VM = new Vue({
el: '#app',
comments: true,
data: function () {
return {
adjustTableData: [
{
type: '类型1',
name: '类型1',
amount: 100
cost: 50,
price: 30,
show: false
},
{
type: '类型2',
name: '类型2',
amount: 100
cost: 50,
price: 30,
show: false
},
],
}
},
directives:{
focus: {
inserted(el, binding) {
el.querySelector('input').focus()
}
}
},
methods: {
//双击表格行
dblclickRow(row, column, event)
{
row.Show = true
},
//输入框失焦事件
onBlur(row, column) {
row.Show = false
this.getTotal();
},
}
})
大概的实现方法就是这样,具体要根据自己的业务调整代码,如果要看element UI文档:https://www.uihtm.com/element/ 查看参数和方法。


