事件处理
监听事件
1 2 3 4 5 6 7 8 9 10
| <div id="example-1"> <button v-on:click="counter += 1">增加 1</button> <p>这个按钮被点击了 {{ counter }} 次。</p> </div> var example1 = new Vue({ el: '#example-1', data: { counter: 0 } })
|
方法事件处理器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <div id="example-2"> <!-- `greet` 是在下面定义的方法名 --> <button v-on:click="greet">Greet</button> </div>
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!'
|
可以通过js函数去调用方法 也可以点击去调用方法
形式参数传递(内联处理器里的方法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <div id="example-3"> <button v-on:click="say('hi')">Say hi</button> <button v-on:click="say('what')">Say what</button> </div> <script> new Vue({ el: '#example-3', methods: { say: function (message) { alert(message) } } }) </script>
|
默认可以接受event 也可以自己定义传递的参数
既需要访问原生时间也需要传递参数
1 2 3 4 5 6 7 8 9 10 11
| <button v-on:click="warn('Form cannot be submitted yet.', $event)"> Submit </button> // ... methods: { warn: function (message, event) { // 现在我们可以访问原生事件对象 if (event) event.preventDefault() alert(message) } }
|
事件修饰符
1 2 3 4 5 6 7 8 9 10 11 12
| <!-- 阻止单击事件冒泡 --> <a v-on:click.stop="doThis"></a> <!-- 提交事件不再重载页面 --> <form v-on:submit.prevent="onSubmit"></form> <!-- 修饰符可以串联 --> <a v-on:click.stop.prevent="doThat"></a> <!-- 只有修饰符 --> <form v-on:submit.prevent></form> <!-- 添加事件侦听器时使用事件捕获模式 --> <div v-on:click.capture="doThis">...</div> <!-- 只当事件在该元素本身 (比如不是子元素) 触发时触发回调 --> <div v-on:click.self="doThat">...</div>
|
点击事件将只会触发一次
键值修饰符
1
| <input v-on:keyup.13="submit">
|
只有input获得焦点的时候会触发键盘事件