javascript - 如何在按键时重新评估计算值?

标签 javascript event-handling vue.js keyboard-events

我想在按下某个键时显示列表中不同的随机单词。

“显示随机单词”部分工作正常:

var vm = new Vue({
  el: "#root",
  data: {
    verbs: ['parier', 'coûter', 'couper', 'blesser']
  },
  computed: {
    verb: function() {
      return this.verbs[Math.floor(Math.random() * this.verbs.length)];
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>
<div id="root">
  {{verb}}
</div>

我现在想将按键绑定(bind)到verb的重新计算。 我应该怎么做?

关于 event handling 的文档建议使用 v-on:keydown 为此 - 我可以添加 JavaScript(v-on:keydown="alert()" 例如),但不知道如何触发重新计算值(我尝试了 v-on:keydown="eval(verb)" 但没有成功)。

最佳答案

按设计计算的值最好运行一次。

One solution Vue 的创建者 Evan 提到,在组件创建时附加一个全局监听器,然后直接调用您的方法。

var vm = new Vue({
  el: "#root",
  data: {
    verb: '',
    verbs: ['parier', 'coûter', 'couper', 'blesser']
  },
  methods: {
    getRandomVerb: function() {
      this.verb = this.verbs[Math.floor(Math.random() * this.verbs.length)];
    }
  },
  mounted() {
      window.addEventListener('keydown', this.getRandomVerb)
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.3/vue.js"></script>
<div id="root">
  {{verb}}
</div>

要使演示正确响应,请运行代码片段,然后单击代码片段窗口并开始键入。将显示随机动词。

关于javascript - 如何在按键时重新评估计算值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40728581/

相关文章:

javascript - `npm run jshint` 结果为 `missing script: jshint`

c# - 事件处理程序的 Lambdas?

javascript - 获取包含特定后代的所有元素

javascript - 用于滑动 div( Accordion )的 jQuery 代码

java - 如何在绘制新矩形时触发自定义事件?

python - wx中表格自动调整大小

javascript - 如何从我的 vuex 操作中分离 Firestore 监听器?

javascript - 将 App.vu 声明为组件时出现意外字符 '@'

javascript - 如何防止 vue.js 覆盖组件中的 jQuery 绑定(bind)?

javascript - 跨多个应用程序共享 TinyMCE 插件