事件处理(修饰符&键盘事件)

2023-11-04

事件的基本使用:

                1.使用v-on:xxx@xxx绑定事件,其中xxx是事件名

                2.事件的回调需要配置在methods对象中,最终会在vm上

                3.methods中配置的函数,不要使用箭头函数!否则this指向就不是vm了

                4.methods中配置的函数,都是被Vue所管理的函数,this的指向是vm 或 组件实例                     对象

                5.@click="demo" 和 @click="demo($event)"效果一致,但后者可以传参

 Vue中的事件修饰符(常用):

            1.prevent:阻止默认事件(常用);

            2.stop:阻止事件冒泡(常用);

            3.once:事件只触发一次(常用);

            4.capture:使用事件的捕获模式;

            5.self:只有event.target是当前操作的元素时才触发事件

            6.passive:事件的默认行为立即执行,无需等待事件回调执行完毕

<div id="root">
        <h2>欢迎来到{{name}}学习</h2>
        <!-- 阻止默认事件(常用) -->
        <a href="https://www.baidu.com" @click.prevent="showInfo">点我去百度</a>
        <!-- 阻止事件冒泡(常用) -->
        <div  @click.stop="showInfo">
            <button @click.stop="showInfo">点我阻止事件冒泡(常用)</button>
            <!-- 修饰符可以连续写 -->
            <a href="https://www.baidu.com" @click.stop.prevent="showInfo">点我阻止事件冒泡和事件的默认事件</a>
        </div>
        <!-- 事件只触发一次(常用) -->
        <button @click.once="showInfo">事件只触发一次(常用)</button>
        <!-- 使用事件的捕获模式 -->
        <div @click.capture="showMsg(1)">
            div1
            <div @click="showMsg(2)">div2</div>
        </div>
        <!-- 只有event.target是当前操作的元素时才触发事件 -->
        <div @click.self="showInfo">
            <button @click="showInfo">只有event.target是当前操作的元素时才触发事件</button>
        </div>
        <!-- 事件的默认行为立即执行,无需等待事件回调执行完毕 -->

        <div class="list">
            <ul @wheel="demo">
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
            </ul>
        </div>
        </div>
    </div>

<script>
    Vue.config.productionTip = false;
    new Vue({
        el:'#root',
        data:{
            name:'春日部双叶幼稚园',
        },
        methods:{
            showInfo(e){
                // e.preventDefault();
                alert('你好吗?');
                console.log(e.target);
            },
            showMsg(msg){
                console.log(msg);
            },
            demo(){
                for(let i = 0;i < 1000;i++){
                    console.log(123);
                }
                console.log('循环结束');
            }
        }        
    })
</script>

键盘事件

1.Vue中常用的按键别名

                回车 => enter

                删除 => delete(捕获“删除”和“退格”键)

                空格 => space

                换行 => tab

                上 => up

                下 => down

                左 => left

                右 => right

2.Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为caps-lock(短横线命名)

3.系统修饰键(用法特殊):ctrl、alt、shift、meta

                (1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发

                (2).配合keydown使用:正常触发事件

4.也可以使用keyCode去指定具体的按键(不推荐)

5.Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名

   Vue.config.keyCodes.kongge = 13

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

事件处理(修饰符&键盘事件) 的相关文章

  • 如何在 AngularJS 中使用 $timeout 运行带有参数的函数?

    我的 AngularJS 控制器中有这个函数 看起来像这样 polling interval 1000 var poll function Execution code timeout poll polling interval poll
  • 使用 HTML5 FileSystem API 将文件写入桌面

    我正在玩一下文件系统API http www html5rocks com en tutorials file filesystem 我发现了很多生成下载链接并让用户以 浏览器方式 下载文件的示例 我想知道两件事 有没有办法将fiddle中
  • 如何监控浏览器中发出的所有自定义事件?

    我想监视网络浏览器中触发的所有自定义事件 任何标准浏览器都可以 需要明确的是 我知道您可以附加事件处理程序来查看何时触发 通常 事件 但如何可靠地检测嵌入对象或 jQuery 脚本是否触发自定义事件 我可以重构浏览器源代码来挂钩事件循环 但
  • 全局 JavaScript 变量作用域:为什么这不起作用?

    所以我在玩 JavaScript 时遇到了我认为奇怪的事情 有谁能解释一下以下内容吗 我已将警报值作为评论包含在内 为什么 foo 中的第一个警报 msg 返回不明确的并不是outside var msg outside function
  • 从 Angular 6 服务中绑定图像

    我有一个端点 它根据某些参数为我提供图像 这不是一个图像网址 而是一个普通图像 因此 当我到达邮递员中的端点时 作为响应 我收到一张图像 JPG 我是否可以在变量中接收该图像并将其绑定到 HTML 标签中 所有问题都有将图像 url 映射到
  • 使用 word_number 值对 javascript 数组进行排序

    如何对数组进行排序 var arr new Array word 12 word 59 word 17 这样我得到 word 12 word 17 word 59 Thanks 您需要编写一个排序方法 您可以编写任何您喜欢的方法 该方法在
  • RequireJS 不遵循设置了 baseUrl 的 data-main 的相对路径

    使用 requireJS 我尝试为我的数据主指定一个与 baseUrl 不同的路径 看来 requireJS 会忽略我在文件名之前输入的任何内容 并始终在 baseUrl 文件夹中查找该文件 我有以下文件夹结构 index html scr
  • 如何在 Jest 测试中模拟 StatusBarManager.getHeight?

    我正在使用 expo 34 并且反应本机用户界面库 https www npmjs com package react native ui lib来自 wix 并且在为我的组件设置笑话测试时遇到问题 问题看起来出现在link https g
  • 拖放图像上传在服务器上不起作用

    我正在尝试实现拖放图像上传 我在网上找到了一个相当简单的脚本并适合我的使用 在我的本地安装中 文件上传得很好 但在服务器上却不行 从我的调试尝试来看 SERVER HTTP X FILENAME 甚至没有被 php 设置 我尝试了以下方法
  • 函数声明或函数表达式

    我刚刚在块作用域中定义函数时遇到了问题 考虑以下程序 try greet function greet alert Merry Christmas catch error alert error 我希望这个程序能够发出警报Merry Chr
  • jQuery 面板滑块通过单击按钮打开但不会关闭

    我的页面上有一个按钮 可以使用 jquery 和 Modernizr 框架打开右侧面板 按钮位于屏幕最右侧 单击时 它会向左滑动并打开打开的面板 问题是 再次单击时它不会滑回到原来的位置 HTML div class cd panel fr
  • 自动调整元素 (div) 大小以适合水平内容

    我尝试谷歌搜索 但没有得到太多结果 我正在构建一个水平轮播 它在浮动的 LI 中显示图像 我想解决的问题是 每次我向轮播添加缩略图 我是延迟加载 时 我都需要重新计算轮播的宽度 以便所有浮动缩略图很好地并排排列 其一 我宁愿不必在 JS 中
  • 当元素具有多个类时如何在 switch 语句中检查 className

    在下面的示例中 我只想单击该选项以在警报中显示 我正在尝试使用 switch 语句来确定单击了哪个类 如果我的 div 不包含多个类 则我的示例将有效 我尝试使用classList contains在我的 switch 语句中无济于事 有没
  • 是否可以从 webpack 中的文件名中删除特殊字符?

    长话短说 我的资产文件名中不能包含某些字符 例如连字符 我没有运气通过解析 webpack 文档来弄清楚是否可以使用正则表达式或类似的东西重命名文件 这样我就可以从我无法控制源文件名的 3rd 方包中删除任何连字符 我的超级天真的例子是这样
  • 在 HTML5 画布上创建颜色选择器

    如何在 HTML5 画布上绘制颜色选择器 一个基本的例子是使用getImageData http jsfiddle net eGjak 60 http jsfiddle net eGjak 60 var ctx cv get 0 getCo
  • 如何在javascript中解析 yyyy-MM-dd HH:mm:ss.SSS 格式的日期?

    const time 2016 11 16 00 00 00 000 const date new Date time console info date 似乎 safari 无法解析 yyyy MM dd HH mm ss SSS 格式日
  • jVectorMap - 向下钻取地图 - 自定义背景

    我正在使用 jVectorMap 中的向下钻取地图 并且尝试将自定义背景颜色设置为地图的第二层 为了自定义主级别 我使用 main 参数 但我不知道如何将其扩展到地图的较低级别 提前致谢 马切伊 None
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示
  • 如何制作饼图聚合数据源?

    Using 适用于 ASP NET MVC 的 Kendo UI 完整版 http www kendoui com 版本 2013 3 1119 2013年11月20日 如果我有这段代码 status chart kendoChart da
  • 通过jquery ajax()和serialize()提交html表单

    我想通过 jquery ajax 提交此表单 这是我所做的 但它不起作用 即表单正在提交并刷新页面 但我没有看到响应 即在同一页面上打印数组 HTML

随机推荐