首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在vuejs中检测ctrl +z和ctrl +y?

如何在vuejs中检测ctrl +z和ctrl +y?
EN

Stack Overflow用户
提问于 2020-04-29 19:55:13
回答 1查看 1.1K关注 0票数 2

嗨,我是vuejs的新手,目前正在开发一个需要在Ctrl +z和Ctrl + y上调用该方法的应用程序。

https://codesandbox.io/s/funny-sky-mqdg0?file=/src/components/HelloWorld.vue

问题:只有当我在输入上按下ctrl+z时,keyup才能工作,我如何让它在div容器上工作,或者在特定页面上工作?是否可以使用纯vuejs,或者我需要安装任何外部库或使用传统的事件监听器方式?任何建议都会很有帮助

代码语言:javascript
复制
<input @keyup.ctrl.90="method1()" />
<input @keyup.ctrl.89="method2()" />
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-29 21:50:31

您可以为整个页面设置一个keyup处理程序。

如果您想在输入之外撤消/重做数据,我认为您必须将每个更改保存在某个地方,然后在keyup处理程序中撤消/重做它。

代码语言:javascript
复制
<div>{{ output }}</div>
代码语言:javascript
复制
data () {
  return {
    changes: [],
    output: ''
  }
},
mounted () {
  document.addEventListener('keyup', this.keyupHandler)
},
destroyed () {
  document.removeEventListener('keyup', this.keyupHandler)
},
methods: {
  logChange (string) {
    this.changes.push(string)
  }
  keyupHandler (event) {
    if (event.ctrlKey && event.code === 'KeyZ') {
      this.undoHandler()
    }
    else if (event.ctrlKey && event.code === 'KeyY') {
      this.redoHandler()
    }
  },
  undoHandler () {
    // Get the data from "this.changes" and set the output
    this.output = ...
  },
  redoHandler () {
    // Get the data from "this.changes" and set the output
    this.output = ...
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61501240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档