首页 > 其他分享 >Vue模板语法——v-on 事件绑定

Vue模板语法——v-on 事件绑定

时间:2024-01-28 12:13:12浏览次数:35  
标签:function Vue console log 绑定 事件 模板 methods

一、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:{
                //vue的函数必须定义在vue的methods属性之中
                add:function(){
                    //这里this指向就是当前Vue的实例对象vm
                    console.log(this === vm);
                    //Vue的实例对象可直接使用data中的数据
                    this.num++;
                },
                sub:function(){
                    console.log(this === vm);
                    this.num--;
                }
            }
        })
    </script>

三、事件函数参数传递

  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

标签:function,Vue,console,log,绑定,事件,模板,methods
From: https://www.cnblogs.com/luluping/p/17992695

相关文章

  • Vue模板语法——键盘事件修饰符
    一、键盘修饰符在JavaScript事件中除了前面所说的事件,还有键盘事件,也经常需要监测常见的键值。在Vue中允许v-on在监听键盘事件时添加关键修饰符。记住所有的keyCode比较困难,所以Vue为最常用的键盘事件提供了别名:enter:回车键tab:制表键delete:含delete和backspace键esc:返回键......
  • Vue模板语法——事件修饰符
    一、事件处理如果需要在内联语句处理器中访问原生DOM事件。可以使用特殊变量$event,把它传入到methods中的方法中。在Vue中,事件修饰符处理了许多DOM事件的细节,让我们不再需要花大量的时间去处理这些烦恼的事情,而能有更多的精力专注于程序的逻辑处理。在Vue中事件修饰符主要有:......
  • 创建Vue项目,报错spawn yarn ENOENT
    1.使用vue创建项目的时候,报错Error:spawnyarnENOENT1.1用户自己设置了默认的包管理yarn1.2没有安装yarn解决方式1:打开C盘,在C盘里,打开users(用户名)的文件夹,然后在右侧搜索名为.vuerc的文件修改.vuerc文件解决方式2:没有安装yarn,那么直接输入命令npmin......
  • Vue模板语法——v-cloak
    一、什么是指令指令的本质就是自定义属性指令的格式:以v-开始,比如:v-cloak二、v-cloak指令用法插值表达式存在的问题:“闪动”如何解决该问题:使用v-cloak指令解决该问题原理:先隐藏,替换好值后再显示最终的值三、v-cloak指令的用法提供样式[v-cloak]{display:......
  • vue响应性原理
     核心实现类Observer:它的作用是给对象的属性添加getter和setter,用于依赖收集和派发更新Dep:用于收集当前响应式对象的依赖关系,每个响应式对象包括子对象都拥有一个Dep实例(里面subs是Watcher实例数组),当数据有变更时,会通过dep.notify()通知各个watcher。W......
  • 前端VUE
    1、   export和exportdefault的区别exportdefaultxxximportxxxfrom'./'exportxxximport{xxx}from'./'在一个文件或模块中,export、import可以有多个,exportdefault仅有一个通过export方式导出,在导入时要加{},exportdefault则不需要 2、    vuenextt......
  • Vue 之 Mixins (混入)
    Mixins是一种分发Vue组件中可复用功能的非常灵活的一种方式。什么时候使用Mixins 1.页面的风格不用,但是执行的方法和需要的数据类似,我们是选择每个都写呢还是提取出公共部分呢? 基础实例我们有一对不同的组件,它们的作用是切换一个状态布尔值,一个模态框和一个提示框。这些......
  • vue 中slot
    插槽使用场景 -该组件被多个地方使用-每个父组件中对该组件的内部有一部分需要特殊定制-slot可以让我们更好的复用组件的同时并对其定制化处理-可以理解为父组件想子组件传递了一段html文本要求:1.子组件模板包含至少一个插槽<slot></slot>2.父组件整个......
  • Vue 数据相关实例方法vm.$watch、vm.$set、vm.$delete介绍
    vm.$watch观察vue实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。//写法一:this.$watch('a.b.c',function(newVal,oldVal){})//键路径vm.$watch(function(){this.fullName=this.......
  • Vue 响应性
    一、响应性原理 数据模型是被代理的JavaScript对象。而当你修改它们时,视图会进行更新。这让状态管理非常简单直观。理解其工作原理同样重要,这样可以避开一些常见的问题。1什么是响应性?响应性是一种允许我们以声明式的方式去适应变化的一种编程范例。如excell。js如何实......