IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue——事件处理 -> 正文阅读

[JavaScript知识库]Vue——事件处理

事件处理

事件的基本使用

  1. 使用v-on : xXX或@xxx绑定事件,其中xxx是事件名;
  2. 事件的回调需要配置在methods对象中,最终会在vm上;
  3. methods中配置的函数,不要用箭头函数!否则this就不是vm了;
  4. methods中配置的函数,都是被Vue所管理的函数,this的指向是vm或组件实例对象
  5. @click="demo”和@click="demo($event)”效果一致,但后者可以传参;
<script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h1>欢迎{{name}}来到</h1>
        <!-- <button v-on:click="showInfo">点我弹出提示</button> -->
        <button @click="showInfo1">点我弹出提示1(不传参)</button>
        <button @click="showInfo2(66,$event)">点我弹出提示2(传参)</button>
    </div>
</body>
<script>
    Vue.config.productionTip = false;

    const vm = new Vue({
        el: "#root",
        data: {
            name: 'feliks',
        },
        methods: {
            showInfo1(event) {
                // console.log(event.target.innerText);
                // console.log(this); //此处的this是vm
                alert('hello')
            },
            showInfo2(number) {
                alert(number)
            }
        }
    })
</script>

事件修饰符

  1. prevent: 阻止默认事件(常用);
  2. stop:阻止事件冒泡(常用);
  3. once:事件只触发一次(常用);
  4. capture:使用事件的捕获模式;
  5. self:只有event.target是当前操作的元素时才触发事件;
  6. passive:事件的默认行为立即执行,无需等待事件回调执行完毕;
<!DOCTYPE html>
<html lang="en">
<head>
    <script src="../js/vue.js"></script>
</head>
<style>
<!--style文件省略-->
</style>

<body>
    <div id="root">
        <h1>欢迎{{name}}</h1>
        <!-- prevent: 阻止默认事件 -->
        <a href="http://felikschen.vcn.ink" @click.prevent="showInfo">我能阻止默认行为</a>

        <!-- stop:阻止事件冒泡 -->
        <div @click="showInfo" class="demo1">
            <button @click.stop="showInfo">我能阻止冒泡</button>
        </div>

        <!-- once:事件只触发一次 -->
        <button @click.once="showInfo">我只触发一次</button>

        <!-- capture:使用事件的捕获模式  先捕获再冒泡-->
        <div class="div1" @click.capture="showMsg(1)">
            div1
            <div class="div2" @click="showMsg(2)">
                div2
            </div>
        </div>

        <!-- self:只有event.target是当前操作的元素时才触发事件 -->
        <div @click.self="showInfo" class="demo1">
            <button @click="showInfo">我能阻止冒泡</button>
            <!-- 修饰符可以连续写 -->
            <!-- <a href="http://felikschen.vcn.ink" @click.prevent.stop="showInfo">我能阻止默认行为还能阻止冒泡</a> -->
        </div>

        <!-- passive:事件的默认行为立即执行,无需等待事件回调执行完毕 -->
        <ul class="list" @wheel.passive="demo">
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
    </div>
</body>
<script>
    Vue.config.productionTip = false; //阻止vue 在启动时生成生产提示
    new Vue({
        el: "#root",
        data: {
            name: 'feliks',
        },
        methods: {
            showInfo(e) {
                alert('要去我的主页吗?')
                    // console.log(e.target);
            },
            showMsg(msg) {
                console.log(msg);
            },
            demo() {
                for (let i = 0; i < 10000; i++) {
                    console.log('#');

                }
            }
        }
    })
</script>

</html>

键盘事件

  1. Vue中常用的按键别名
    • 回车=>enter
    • 删除=>delete(捕获删除”和“退格”键)
    • 退出=>esc
    • 空格=>space
    • 换行 =>tab(特殊,必须配合keydown使用)
    • 上=> up
    • 下 = down
    • 左=> left
    • 右=> right
  2. Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)
    • 例如:CapsLock => caps-lock
  3. 系统修饰键(用法特殊):ctrl、alt、shift、meta(win键)
    • (1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。
    • (2).配合keydown使用:正常触发事件。
  4. 也可以使用keyCode去指定具体的按键(不推荐)
  5. Vue.config.keyCodes.自定义键名=键码,可以去定制按键别名
<body>
    <div id="root">
        <h1>欢迎{{name}}</h1>
        <input type="text" placeholder="按下回车提示" @keyup.huiche="showInfo">
        <!-- 按ctrl+y提示 -->
        <!-- <input type="text" placeholder="按下回车提醒" @keyup.ctrl.y="showInfo"> -->
    </div>
</body>
<script>
    Vue.config.productionTip = false;
    // Vue.config.keyCodes.huiche = 13;//自定义一个别名
    new Vue({
        el: "#root",
        data: {
            name: 'feliks',
        },
        methods: {
            showInfo(e) {
                console.log(e.target.value);
                console.log(e.key, e.keyCode);
            }
        }
    })
</script>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:16:35  更:2022-05-16 11:16:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:44:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码