当前位置:   article > 正文

vue+element+键盘监听实现el-table行切换快捷键操作_el-table 键盘监听换行

el-table 键盘监听换行

原始需求:表格中数据修改后可以按快捷键向下一行一行复制

直接上代码:

  1. <template>
  2. <div id="app">
  3. <el-table :data="tableData"
  4. class="data_table"
  5. ref="itsmDataTable"
  6. highlight-current-row="highlight-current-row">
  7. <el-table-column prop="number" label="编号" width="180">
  8. </el-table-column>
  9. <el-table-column prop="name" label="姓名" width="180">
  10. </el-table-column>
  11. <el-table-column prop="info" label="描述">
  12. </el-table-column>
  13. </el-table>
  14. </div>
  15. </template>
  16. <script>
  17. export default {
  18. data () {
  19. return {
  20. tableData: [{
  21. number: '2016001',
  22. name: '小明',
  23. info: '这是第一条数据'
  24. }, {
  25. number: '2016002',
  26. name: '小李',
  27. info: '这是第二条数据'
  28. }, {
  29. number: '2016003',
  30. name: '小王',
  31. info: '这是第三条数据'
  32. }, {
  33. number: '2016004',
  34. name: '小罗',
  35. info: '这是第四条数据'
  36. }, {
  37. number: '2016005',
  38. name: '小蔡',
  39. info: '这是第五条数据'
  40. }]
  41. }
  42. },
  43. methods: {
  44. keyDown() {
  45. //console.log('键盘安下了')
  46. if (event.keyCode === 120) {
  47. //this.$refs.multipleTable.store.states.selection
  48. //console.log(this.$refs.itsmDataTable.store.states)
  49. //console.log(this.$refs.itsmDataTable.store.states.currentRow)
  50. let array = this.tableData
  51. let current = this.$refs.itsmDataTable.store.states.currentRow
  52. // 找到current当前行的索引
  53. for (let i = 0, len = array.length; i < len; i++) {
  54. if (Object.entries(array[i]).toString() === Object.entries(current).toString()) {
  55. console.log('当前行索引',i)
  56. // 如果当前行不是倒数第一行,则修改下一行的name为当前行的值
  57. if (i < len - 1) {
  58. array[i+1].name = array[i].name
  59. // 跳转到下一行
  60. this.$refs.itsmDataTable.setCurrentRow(array[i + 1])
  61. break
  62. }
  63. }
  64. }
  65. }
  66. }
  67. },
  68. mounted() {
  69. console.log('进入页面了')
  70. document.addEventListener('keydown', this.keyDown.bind(this))
  71. }
  72. }
  73. </script>
  74. <style>
  75. </style>

关键点是使用

this.$refs.itsmDataTable.store.states.currentRow

拿到当前行,开始网上搜教程,几乎全都是使用插槽的操作还要使用点击事件才能拿到当前行索引,很少有键盘监听的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/114556
推荐阅读
相关标签