惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
IT之家
IT之家
Google DeepMind News
Google DeepMind News
罗磊的独立博客
爱范儿
爱范儿
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
U
Unit 42
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
B
Blog
博客园 - 叶小钗
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - linFen

Ubuntu下使用ProcDump ubuntu 20.04 搭建 ProcDump Anaconda 常用命令 记录codesmith 断点调试弹不了vs Vue模板语法——键盘事件修饰符 Vue模板语法——事件修饰符 Vue模板语法——v-model 双向数据绑定 Vue模板语法——v-once 数据响应式 Vue模板语法——数据绑定指令 Vue模板语法——v-cloak vue响应性原理 ES6其他 css其他 JS其他 前端VUE 前端 vue 中slot Vue 之 Mixins (混入) Vue 响应性
Vue模板语法——v-on 事件绑定
linFen · 2024-01-28 · via 博客园 - linFen

Posted on 2024-01-28 11:59  linFen  阅读(563)  评论()    收藏  举报

一、v-on事件绑定

  1. v-on指令
    用于绑定事件

  2. v-on用法

    转=>最底层的技术渣 -- Vue基础语法之v-on

    转=>一瓶怡宝矿泉水 -- v-on指令

    • 直接绑定事件:

      注意:

      • 绑定的事件是对应的方法不是定义在data里面,而是定义在vue实例的methods里
      • 绑定的函数可直接绑定函数名——fun,也可以直接调用函数——fun()

      @事件名="方法" => @click="onClick"

      v-on:事件名="方法" => v-on:click="onClick"

          methods:{
              onClick:function(){
                  console.log('onClick')
              }
          }
      
    • 绑定事件类:

      注意: 当绑定多个事件时,需要传入一个对象,对象的键名就是事件名,对象的键值就是对应事件要执行的方法。注意在vue实例中方法一定要有,不然就报错。

      v-on="{事件:方法}" => v-on="{mouseenter:onEnter,mouseout:onOut}"

          methods:{
                  onEnter:function(){
                      console.log("onEnter")
                  },
                  onOut:function(){
                      console.log("onOut")
              },
          }
      
    • 阻止默认形为其一(提交时刷新)

      v-on:事件="方法($event)" => @submit="onSubmit($event)"

          methods:{
                  onSubmit:function(e){
                      e.preventDefault();
                      console.log("onSubmit")
              }
          }
      

      注意: $event是vue里面的事件对象,vue能认识。在表单提交的时候,浏览器会默认发送一个get或者post请求到指定页面,刷新整个页面。所以要阻止浏览器的默认行为,可以用事件对象e.preventDefault();

    • 阻止默认形为其二(提交时刷新)

      注意: 阻止form表单提交的这种浏览器默认事件,其实vue也想到了,并它封装好了,只要在事件的后面添加一个.prevent修饰符,表示阻止默认事件。

      v-on:事件.行为="方法" => @submit.prevent="onSubmit2"

      注: 绑定事件中,除了prevent阻止默认事件,还有stop,表示停止冒泡事件。

          @submit.stop="onSubmit2"
      
          methods:{
                  onSubmit2:function(){
                      console.log("onSubmit2")
              }
          }
      
    • 键盘事件(最好配合阻止默认行为一起使用)

      注: 当我们绑定的事件是keyup、keypress、keydown键盘事件时,而且需要判断按下是回车时。vue也想到了这点,只需要在键盘事件后面添加一个.enter修饰符即可。

      v-on:事件.键值="方法" => @keyup.enter="onEnter"

      methods:{
              onKeyup:function(){
                  console.log("onKeyup")
          }
      }
      

二、v-on例子

    <div id="app">
        <div v-text="num"></div>
        <div>
            <button v-on:click='num++'>加1</button>
            <button @click='add'>@加1</button>
            <button @click='sub()'>@减1</button>
            <button v-on:click='sub'>减1</button>
        </div>
    </div>
    <script src="./js/vue.js"></script>
    <script type="text/javascript">
        var vm = new Vue({
            el:"#app",
            data:{
                num:0
            },
            methods:{
                

三、事件函数参数传递

  1. 调用函数与传递事件对象

    v-on:click="方法(value,$event)"

    注意: 当要传递事件对象时,必须将它放在实参最末位。并且事件对象的名字是固定的,只能是$event

    • 例子:
        <div id="app">
            <div v-text="num"></div>
            <div>
                <button @click='event(11,22,$event)'>@加1</button>
            </div>
        </div>
        <script src="./js/vue.js"></script>
        <script type="text/javascript">
            var vm = new Vue({
                el:"#app",
                data:{
                    num:0
                },
                methods:{
                    event:function(para1,para2,e){
                        console.log(para1,para2);
                        console.log(e);
                        console.log(e.target.tagName);
                        console.log(e.target.innerHTML);
                    },
                }
            })
        </script>
    
  2. 绑定函数名与传递事件对象

    v-on:click="方法名"

    注意: 绑定函数名的方法默认首个形参就是事件对象$event

        methods:{
            fun:function(event){
    
            }
        }
    
    • 例子:
        <div id="app">
            <div v-text="num"></div>
            <div>
                <button @click='event'>事件调用</button>
            </div>
        </div>
        <script src="./js/vue.js"></script>
        <script type="text/javascript">
            var vm = new Vue({
                el:"#app",
                data:{
                    num:0
                },
                methods:{
                    event:function(e){
                        console.log(e);
                        console.log(e.target.tagName);
                        console.log(e.target.innerHTML);
                    }
                }
            })
        </script>
    
  3. 总结

    事件绑定-参数传递:

    • 如果事件直接绑定函数名称,那么默认会传递事件对象作为事件函数的第一个形式参数。
    • 如果事件绑定函数调用,那么事件对象必须作为最后一个参数显性传递,并且事件函数传递的实际参数名称必须为$event