• (7) vue 事件


    1.属性监听

    v-on:click

        <div id="vm">
            <button v-on:click="counter += 1">点击</button>
            <p>{{ counter }} times</p>
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                data: {
                    counter: 0
                }
            })
        </script>

    2.方法监听

        <div id="vm">
            <button v-on:click="add">点击</button>
            <p>{{ counter }} times</p>
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                data: {
                    counter: 0
                },
                methods: {
                    add: function () {
                        this.counter=this.counter+1
                    }
                }
            })
        </script>

    3.带参数的方法

        <div id="vm">
            <!--传参-->
            <button v-on:click="add(10)">点击</button>
            <p>{{ counter }} times</p>
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                data: {
                    counter: 1
                },
                methods: {
                    add: function (i) {
                        this.counter=this.counter*i
                    }
                }
            })
        </script>

    4.原生事件

        <div id="vm">
            <!--传参-->
            <button v-on:click="add(10,$event)">点击</button>
            <p>{{ counter }} times</p>
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                data: {
                    counter: 0
                },
                methods: {
                    add: function (i, event) {
                        if (event) {
                            //点击按钮时鼠标x轴的坐标
                            console.log(event.screenX)
                        }
                        this.counter +=1
                    }
                }
            })
        </script>

    5.事件修饰符

    <!-- 阻止单击事件继续传播 -->
    <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>
    
    <!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
    <!-- 即事件不是从内部元素触发的 -->
    <div v-on:click.self="doThat">...</div>

    2.1.4新增

    <!-- 点击事件将只会触发一次 -->
    <a v-on:click.once="doThis"></a>

    例子

        <div id="vm">
            <!-- 点击事件将只会触发一次 -->
            <Button v-on:click.once="btn">你好</Button>
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                methods: {
                    btn: function () {
                        alert('hello')
                    }
                }
            })
        </script>

    2.3.0新增

    <!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
    <!-- 而不会等待 `onScroll` 完成  -->
    <!-- 这其中包含 `event.preventDefault()` 的情况 -->
    <div v-on:scroll.passive="onScroll">...</div>

    6.按键修饰符

        <div id="vm">
            <!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` -->
            <input v-on:keyup.enter="submit" >
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                methods: {
                    submit: function () {
                        alert('按下了回车键')
                    }
                }
            })
        </script>

    或者

    <input v-on:keyup.13="submit">

    Vue 提供了绝大多数常用的按键码的别名:

    • .enter

    • .tab

    • .delete (捕获“删除”和“退格”键)

    • .esc

    • .space

    • .up

    • .down

    • .left

    • .right

    注意:有一些按键 (.esc 以及所有的方向键) 在 IE9 中有不同的 key 值, 如果你想支持 IE9,这些内置的别名应该是首选。

    7.自定义按键

    https://cn.vuejs.org/v2/api/#keyCodes

    8.系统修饰键

    (1)系统修饰键

     2.1.0新增

    • .ctrl
    • .alt
    • .shift
    • .meta

    如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器

        <div id="vm">
            <!-- Alt + C -->
            <input @keyup.alt.67="clear">
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                methods: {
                    clear: function () {
                        alert('复制')
                    }
                }
            })
        </script>

    (2).exact 修饰符

    2.5.0新增

    .exact 修饰符允许你控制由精确的系统修饰符组合触发的事件。

    <!-- 即使 Alt 或 Shift 被一同按下时也会触发 -->
    <button @click.ctrl="onClick">AAA</button>
    
    <!-- 有且只有 Ctrl 被按下的时候才触发 -->
    <button @click.ctrl.exact="onCtrlClick">AAA</button>
    
    <!-- 没有任何系统修饰符被按下的时候才触发 -->
    <button @click.exact="onClick">AAA</button>

    例如:按下ctrl同时点击按钮

        <div id="vm">
            <button @click.ctrl.exact="onClick">AAA</button>
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                methods: {
                    onClick: function () {
                        alert('按下了滑轮键')
                    }
                }
            })
        </script>

    (3)鼠标按钮修饰符

    • .left
    • .right
    • .middle

    这些修饰符会限制处理函数仅响应特定的鼠标按钮。

        <div id="vm">
            <!--按下滑轮键-->
            <input @click.middle="clear">
        </div>
        <script>
            var vm = new Vue({
                el: '#vm',
                methods: {
                    clear: function () {
                        alert('按下了滑轮键')
                    }
                }
            })
        </script>
  • 相关阅读:
    记录一则ORACLE MOVE操作后重建索引过程被强制中断导致的ORA-8104案例
    Sybase数据库,普通表修改分区表步骤
    JavaWeb request对象常用操作
    JavaWeb 获取请求网络协议、IP、端口号、项目根路径
    java 从spring容器中获取注入的bean对象
    eclipse Java注释修改
    JavaWeb 获取ip地址
    jQuery源代码解析(1)—— jq基础、data缓存系统
    Http状态码
    Item 24: 区分右值引用和universal引用
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/12283584.html
Copyright © 2020-2023  润新知