vue el-tree 键盘监听实现上一页下一页

方式一:全局监听

        <el-tree
            :data="imageList"
            :props="imageListTreeProps"
            @node-click="handleNodeClick"
            node-key="url"
            ref="imageListTree"
            :default-expand-all="true"
            show-checkbox>
          </el-tree>
 mounted() {
      let this_ = this
      document.onkeydown = function(e) {
        let key = window.event.keyCode;
        let currentNode = this_.$refs.imageListTree.getCurrentNode()
        let data = this_.imageList
        if (key == 38) {
          let preNode;
          for(let i = 0; i < data.length; i++) {
            for (let j = 0; j < data[i].children.length; j++) {
              if (currentNode == data[i].children[j]) {
                let idx = j - 1 > 0 ? j-1 : 0;
                preNode = data[i].children[idx]
                break;
              }
            }
          }
          this_.$refs.imageListTree.setCurrentNode(preNode)
          let srcI =  '/gen/gentable/imageShow/' + preNode.url
          let nameI = preNode.name
          this_.showImageOfPdf(srcI, nameI)
        }
        if (key == 40) {
          let nextNode;
          for(let i = 0; i < data.length; i++) {
            for (let j = 0; j < data[i].children.length; j++) {
              if (currentNode == data[i].children[j]) {
                let idx = j + 1 < data[i].children.length ? j + 1 : data[i].children.length - 1;
                nextNode = data[i].children[idx]
                break;
              }
            }
          }
          this_.$refs.imageListTree.setCurrentNode(nextNode)
          let srcI =  '/gen/gentable/imageShow/' + nextNode.url
          let nameI = nextNode.name
          this_.showImageOfPdf(srcI, nameI)
        }
      };
    },

方式二:

        <el-tree
            :data="imageList"
            :props="imageListTreeProps"
            @node-click="handleNodeClick"
            :highlight-current="true"
            node-key="url"
            ref="imageListTree"
            :default-expand-all="true"
            @keydown.down.native="keyDownClick"  //注册事件
            @keydown.up.native="keyUpClick"      //注册事件
            show-checkbox>
          </el-tree>
    methods: {
     
      keyDownClick(e) {
        console.log("keyDown", e)
      },
      keyUpClick(e) {
        console.log("keyDown", e)
      }
    }

猜你喜欢

转载自blog.csdn.net/kan_Feng/article/details/127206183
今日推荐