Vue初体验(四),关于事件v-on

事件是每个框架都绕不过去的话题,实现的方式各有千秋,而Vue中,我们使用v-on的指令来进行事件监听。
1、使用v-on监听事件。示例代码如下:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>Vue学习</title>
        <script src="https://unpkg.com/vue/dist/vue.js"></script>
    </head>
    <style>
        .style{
            color: red
        }
    </style>
    <body>
        <div id="app">
            <button v-on:click="message+=1">click</button>
            <p>被点击了{{message}}</p>

        </div>

        <script>
            new Vue({
                el: '#app',
                data: {
                    message: 0
                }
            })
        </script>
    </body>
</html>
  • 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
  • 26
  • 27
  • 28
  • 29
  • 30

2、正常情况下,事件应该写在函数中,而我们需要在Vue这个对象的参数中配置methods属性,里面就是相应的一些方法,这个方法通过this能访问数据。代码如下:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>Vue学习</title>
        <script src="https://unpkg.com/vue/dist/vue.js"></script>
    </head>
    <style>
        .style{
            color: red
        }
    </style>
    <body>
        <div id="app">
            <button v-on:click="clicks">click</button>

        </div>

        <script>
            new Vue({
                el: '#app',
                data: {
                    message: 0
                },
                methods: {
                    clicks: function(){
                        alert("发生点击事件了")
                    }
                }
            })
        </script>
    </body>
</html>
  • 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
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

3、关于事件修饰符。
在Vue中,我们不得不牵扯一些dom相关的东西,比如阻止默认行为,阻止事件冒泡等等,但是正常情况下,我们应该着手处理的是数据逻辑,而不是和dom相关的东西,尽管我们确实能在事件中处理。(这里应该这么理解,MVC思想中,和dom相关的处理尽可能的隔离出去,我们应该专注于数据和逻辑),这就是事件修饰符的存在意义。通过由点(.)表示的指令后缀来调用修饰符。
.stop
.prevent
.capture
.self
.once

<!-- 阻止单击事件冒泡 -->
<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>
<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>
<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">
<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 缩写语法 -->
<input @keyup.enter="submit">
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

可以用如下修饰符开启鼠标或键盘事件监听,使在按键按下时发生响应。
.ctrl
.alt
.shift
.meta

<!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>
  • 1
  • 2
  • 3
  • 4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章