• 【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)'效果一样。但后者可以传参。

    1. <div id="root">
    2. <h2>欢迎来到{{name}}学习</h2>
    3. <button @click="showInfo1">点我显示信息1(不传参)</button>
    4. <button @click="showInfo2($event, 66)">点我显示信息2(不传参)</button>
    5. </div>
    6. <script>
    7. new Vue({
    8. el: '#root',
    9. data(){
    10. return{
    11. name: '小屋',
    12. }
    13. },
    14. methods:{
    15. showInfo1(event){
    16. alert("同学你好!")
    17. },
    18. showInfo2(event,number){
    19. console.log(event, number);
    20. console.log(event.target.innerText);
    21. console.log(this); // 此处的this是vm
    22. alert("同学你好!!")
    23. }
    24. }
    25. })
    26. </script>

    事件的修饰符

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

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

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

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

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

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

    1. <div id="app">
    2. <!-- prevent:阻止默认事件(常用) -->
    3. <a href="http://mi.com" @click.prevent="showInfo">点我去小米</a>
    4. <!-- stop:阻止事件冒泡(常用) -->
    5. <!-- 修饰符可以连续写 @click.prevent.stop-->
    6. <div class="demo1" @click="showInfo">
    7. <button @click.stop="showInfo">点我显示信息</button>
    8. <a href="http://mi.com" @click.prevent.stop="showInfo">点我去小米</a>
    9. </div>
    10. <!-- once:事件只触发一次(常用) -->
    11. <button @click.once="showInfo">点我显示信息</button>
    12. <!-- capture:使用事件的捕获模式 -->
    13. <!-- 在父级上添加,事件的模式 由 冒泡变为捕获 -->
    14. <!-- son&father 到 father&son -->
    15. <div class="test1" @click.capture="showMsg('father')">
    16. 1111
    17. <div class="test2" @click="showMsg('son')">2222</div>
    18. </div>
    19. <!-- self:只有event.target是当前操作的元素时才触发事件 -->
    20. <div class="demo1" @click.self="showInfo">
    21. <button @click="showInfo">点我显示信息</button>
    22. </div>
    23. <!-- passive:事件的默认行为立即执行,无需等待事件回调执行完毕 -->
    24. <!-- wheel 会等待事件执行完毕后,在进行下一步,使用passive可以避免此情况 -->
    25. <!-- scroll 无需等待 即刻执行 -->
    26. <ul @wheel="demo">
    27. <li>1</li>
    28. <li>2</li>
    29. <li>3</li>
    30. <li>4</li>
    31. </ul>
    32. </div>
    33. <script>
    34. new Vue({
    35. el: '#app',
    36. data(){
    37. return{
    38. }
    39. },
    40. methods:{
    41. showInfo(e){
    42. alert("即将进入小米官网")
    43. // console.log(e.target);
    44. console.log('#');
    45. },
    46. showMsg(n){
    47. console.log(n)
    48. },
    49. demo(){
    50. for(var i=0; i<1000; i++){
    51. console.log("#");
    52. }
    53. }
    54. }
    55. })
    56. </script>

    键盘事件

            1. vue中常用的按键别名

                回车 => enter

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

                退出 => esc

                空格 => space

                换行 => tab     (特殊,必须配合keydown去使用)

                上 => up

                下 => down

                左 => left

                右 => right

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

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

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

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

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

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

    1. <div id="app">
    2. <h1>键盘事件</h1>
    3. <input type="text" placeholder="按回车返回value" @keyup. ="demo"><br>
    4. <input type="text" placeholder="未定义的键值,CapsLock" @keyup.caps-lock="demo"><br>
    5. <input type="text" placeholder="特殊按键:tab、ctrl、alt、shift、meta" @keydown.tab="demo"><br>
    6. <input type="text" placeholder="特殊按键:只用ctrl.y时可以" @keyup.ctrl.y="demo"><br>
    7. <input type="text" placeholder="使用keycode" @keyup.13="demo"><br>
    8. <input type="text" placeholder="自定义别名" @keyup.huiche="demo"><br>
    9. </div>
    10. <script>
    11. Vue.config.productionTip = false; // 在启动Vue时,阻止生产信息的显示
    12. Vue.config.keyCodes.huiche = 13;
    13. new Vue({
    14. el:"#app",
    15. data(){
    16. return{
    17. }
    18. },
    19. methods:{
    20. demo(e){
    21. console.log(e.target.value)
    22. }
    23. }
    24. })
    25. </script>

  • 相关阅读:
    Error: Member not found: ‘FirebaseAppPlatform.verifyExtends‘
    南昌某高校遭黑客攻击被罚款,网络安全工作需真正重视起来!
    Qt扫盲-QSqlField 理论总结
    使用vue扫描扫描仪图像
    Nginx性能优化(超详细)
    Android kotlin-gradle-plugin升级到1.7.10引发的编译问题
    jvm的调优工具
    CMake链接外部库
    雪碧图 css 使用方式与 Js使用方式
    决策树(实验室会议小记)
  • 原文地址:https://blog.csdn.net/qq_57215961/article/details/125571374