Vue(七)——事件处理


前情提要:

  1. v-on——监听DOM事件,在触发时运行js代码
  2. 在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量 $event 把它传入方法

示例:

var example2 = new Vue({
  el: '#example-2',
  data: {
    name: 'Vue.js'
  },
  // 在 `methods` 对象中定义方法
  methods: {
    greet: function (event) {
      // `this` 在方法里指向当前 Vue 实例
      alert('Hello ' + this.name + '!')
      // `event` 是原生 DOM 事件
      if (event) {
        alert(event.target.tagName)
      }
    }
  }
})

// 也可以用 JavaScript 直接调用方法
example2.greet() // => 'Hello Vue.js!'

v-on 缩写


...


...


 ... 

自定义响应函数

除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法:

new Vue({
  el: '#example-3',
  methods: {
    say: function (message) {
      alert(message)
    }
  }
})

事件修饰符

方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。
为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符

  • .stop
  • .prevent
  • .capture
  • .self
  • .once
  • .passive





...
...
...

按键修饰符

监听键盘事件keyup的输入,比如enter、page-down等



你可以直接将 KeyboardEvent.key 暴露的任意有效按键名转换为 kebab-case 来作为修饰符。


在上述示例中,处理函数只会在 $event.key 等于 PageDown 时被调用。

常用按键修饰符(用来替换按键码):

  • .enter
  • .tab
  • .delete (捕获“删除”和“退格”键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

v-on好处

  1. 扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。
  2. 因为你无须在 JavaScript 里手动绑定事件,你的 ViewModel 代码可以是非常纯粹的逻辑,和 DOM 完全解耦,更易于测试。
  3. 当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何清理它们。