Vue事件监听

news/2024/7/10 3:06:15 标签: vue

与用户进行交互时,需要监听到用户发生的事件,比如:点击、拖拽、键盘事件等等。
可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

一、v-on的基本使用

<button v-on:click="counter++">+</button>
// v-on: 表示要绑定事件监听
// click: 绑定事件的类型,单击
// click="counter++":click后面接触发事件要执行的内容
<button @click="counter++">+</button> // 语法糖
<div id="app">
	<button @click="increment">+</button>
	<button @click="decrement">-</button>
	<h2>{{counter}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
	const app = new Vue({
		el:'#app',
		data:{
			counter:0
		},
		methods:{
			increment(){
				this.counter++
			},
			decrement(){
				this.counter--
			}
		}
	})
</script>

二、v-on的参数问题

在绑定一个方法时,该方法中可能会传入参数,则需要去分析参数的问题。
当v-on绑定某个方法时:
(1)如果方法本身不传参数时,则方法中的()可加可不加
(2)如果函数本身需要一个参数,而没有加(),vue会将浏览器产生的event事件对象作为参数传入到方法
(3)方法定义时,我们需要event对象,同时又需要其他参数,则在调用方法时,我们可以通过$event来手动获取到浏览器参数的event对象。
注意:$event 如果直接写event会报错,vue会把它当成一个变量

<div id="app">
  <button @click="btn">按钮1</button>
  <button @click="btn()">按钮1</button>
  //绑定方法时,方法本身不用传参数时,()可加可不加都可以,效果一样

  <button  @click="btn2(123)">按钮2</button> // 123
  <button  @click="btn2()">按钮2</button>   //为undefined
  //没有传参数,而下面的方法里面需要接收参数,会打印出undefined
  //事件调用的方法,方法本身要传参数时,若加(),则跟我们平时的一样
   
  <button @click="btn2">按钮2</button> // MouseEvent对象
  //绑定方法时,方法本身要传参数,若未加(),则默认传入事件对象event

  <button @click="btn3(30,$event)">按钮3</button>
   //方法定义时,若需要event事件对象和其他参数
   //则可以传参$event,表示传的是event事件对象
</div>
<script>
  const app = new Vue({
    el:"#app",
    data:{
      message:"你好啊"
    },
    methods:{
      btn(){
        console.log("按钮1");
      },
      btn2(number){
        console.log(number);      //打印传参
      },
      btn3(number,event){
        console.log("-----",number,event);
      }
    }
 })
</script>

三、v-on的修饰符

1、在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求,Vue.js 为 v-on 提供了事件修饰符,可以更加轻松简洁地去实现。
2、修饰符的使用形式:
v-on:事件类型.修饰符 =" "
v-on:click.stop=“方法”
3、修饰符的种类(举例说明):

(1)<!-- 阻止单击事件继续传播即阻止事件冒泡 -->
<div @click.stop="doThis"></div>
(2)<!-- 提交事件不再重载页面即阻止默认行为 -->
<form @submit.prevent="onSubmit"></form>
(3)<!-- 点击事件将只会触发一次 -->
<a @click.once="doThis"></a>
(4)<!-- 按键修饰符 -->
<input @keyup.enter="submit">
<div id="app">
  <div @click="Div">
    aaa
  	<button @click.stop="Btn">按钮</button>
  	//1.阻止事件冒泡
  </div>  
	  //因为div和button都绑定了事件,我们点击按钮,因为事件冒泡,则会触发button和div的事件;
	  //在vue中,我们使用.stop修饰符就可以阻止事件冒泡了;
  <form action="http://www.baidu.com">
    <input type="submit" value="提交"  @click.prevent="submitClick">
    
    //2.绑定了单击事件,则向要取消它跳转的默认行为
    //这样就可以自己在函数中收集数据,向服务器发请求-->
  </form>

  <input type="text" v-on:keyup="key" >
   //3.监听键盘按键的抬起
  <input type="text" v-on:keyup.enter="key" >
   //则只监听键盘中enter键的点击,即抬起按键enter,就触发key方法
  <button @click.once="Btn2">按钮2</button>
   //4.只有第一次点击时触发,单击只触发一次
</div>
<script>
  const app = new Vue({
    el:"#app",
    data:{
      message:"你好啊"
    },
    methods:{
      Div(){
        console.log("Div");
      },
      Btn(){
        console.log("Btn");
      },
      submitClick() {
         console.log("取消默认行为");
      },
      key(){
        console.log("key方法执行了");
      },
      Btn2(){
        console.log("按钮2执行了");
      }
    }
  })
</script>

http://www.niftyadmin.cn/n/1556601.html

相关文章

JS的事件委托(事件代理)

一、前言 委托(代理)顾名思义就是请别人帮忙做某件事情而达到自己的需求&#xff0c;那么JS中的事件委托又是怎么样的呢&#xff1f;现在我们有公司员工拿快递这样一个需求&#xff0c;要实现这个需求有两个方案&#xff1a;一是公司的每个人都自己去快递点排队取快递&#xf…

顷刻应用—给你看得见的安全感

作为小区的业主&#xff0c;我们都希望在一个安静、祥和、安全的小区里生活&#xff0c;其中安全又是我们最基本的要求。可是现状却总是让我们无法满意&#xff0c;当大家在一起闲聊时&#xff0c;似乎吐槽各自的小区的各种问题是一个永恒的话题。虽然小区中已经运用了多种高科…

Vue的条件判断

1、Vue的条件判断 1.vue的条件判断&#xff1a;v-if、v-else-if、v-else&#xff0c;这三个指令与JS的条件语句if、else、else if类似。Vue的条件指令可以根据表达式的值在DOM中渲染或销毁元素或组件。 2.指令v-if:可以用v-if指令的条件(判断)值来决定DOM的元素是否渲染出来&a…

SequoiaDB巨杉数据库携手民生银行分布式数据管理平台

日前&#xff0c;SequoiaDB巨杉数据库成功中选民生银行新一期“年度生产运营商业软件许可和服务采购”项目&#xff0c;再次携手推进分布式数据库管理平台建设。自从2014年正式和民生银行建立合作&#xff0c;巨杉数据库至今已经管理超过2PB的数据&#xff0c;节点数超过130台物…

JavaScript原型与原型链

一、普通对象与函数对象 在JavaScript的世界里&#xff0c;万物皆对象。对象分为普通对象和函数对象 function f1() { }; var f2 function () { }; var f3 new Function();var o1 {}; var o2 new Object(); var o3 new f1(); // 等同于下面的o4 var o4 new new Functio…

openpyxl

写入 from openpyxl import Workbookwb Workbook()wb1 wb.create_sheet(index, 0)wb1[D2] alsidhfwb1.cell(4,2,11111111111)wb1[A1] 4wb1[A2] 3wb1[A3] sum(A1:A2)wb1.append([])wb1.append([])wb1.append([])wb1.append([])wb1.append([])wb1.append([1,2,3,4,5,6,7,8,…

元素水平垂直居中的方法总结

1、元素水平居中 当然最好使的是&#xff1a; margin: 0 auto;2、元素水平垂直居中 方案1&#xff1a;position 元素有宽高而且要知道具体宽高 父元素设置为&#xff1a;position: relative; 子元素设置为&#xff1a;position: absolute; 距上50%&#xff0c;距左50%&#…

简单的聊聊网络请求中的内存拷贝

序 掘金是自己刚发现不久的平台&#xff0c;原本一些学习笔记都是记录在有道&#xff0c;因为正好两边都支持markdown&#xff0c;现在打算把一些整理后的笔记分享出来。这篇主要来简单的聊聊网络请求中的内存拷贝。 网络请求中数据传输过程图 数据传输类型一&#xff08;read&…