标签:el ++ 单元格 rowCount colCount table ev col row
<template>
<div class="app-container">
<el-table
v-loading="listLoading"
:data="list"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column align="center" label="ID" width="95">
<template slot-scope="scope">
<el-input v-model="scope.row.id"
v-bind:ref="'r'+ scope.$index + 'c' + 1"
@input='input(scope.row, scope.row.id, range.value)'
@keyup.native="keyup($event, scope.$index, 1)"
@change='save(scope.row)'></el-input>
</template>
</el-table-column>
<el-table-column align="center" label="author" width="95">
<template slot-scope="scope">
<el-input v-model="scope.row.author"
v-bind:ref="'r'+ scope.$index + 'c' + 2"
@input='input(scope.row, scope.row.author, range.value)'
@keyup.native="keyup($event, scope.$index, 2)"
@change='save(scope.row)'></el-input>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import { getList } from '@/api/table'
export default {
filters: {
statusFilter(status) {
const statusMap = {
published: 'success',
draft: 'gray',
deleted: 'danger'
}
return statusMap[status]
}
},
data() {
return {
list: null,
listLoading: true
}
},
created() {
this.fetchData()
},
methods: {
fetchData() {
this.listLoading = true
getList().then(response => {
this.list = response.data.items
this.listLoading = false
})
},
keyup(ev, row, col) {
this.keyupTo(ev, row, col, this.list.length,2)
},
keyupTo(ev, row, col, rowCount, colCount) {
// 替代 switch 的优雅写法
const actions = {
'ArrowUp': () => {
row--
if (row < 0) row = rowCount - 1
},
'ArrowDown': () => {
row++
if (row >= rowCount) row = 0;
},
'ArrowLeft': () => {
col--
if (col < 1) col = colCount;
},
'ArrowRight': () => {
col++
if (col > colCount) col = 1
},
'Enter': () => {
col++
if (col > colCount) {
// 右下角的话保持不动
if (row === (rowCount - 1)) {
col = colCount
this.list.push({})
} else {
col = 1
row++
}
}
},
}
let action = actions[ev.key];
if (action !== undefined) {
action.call()
// 用 nextTick 避免 input 还没渲染出来
this.$nextTick(() => {
this.$refs['r' + row + 'c' + col].focus()
})
}
},
}
}
</script>
标签:el,++,单元格,rowCount,colCount,table,ev,col,row 来源: https://blog.csdn.net/az44yao/article/details/118978473
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。