Vue.js中的两大指令:v-on和v-bind,实现页面动态渲染和事件响应

news2024/11/16 5:41:29

Vue.js中的两大指令:v-on和v-bind,实现页面动态渲染和事件响应

  • 一、Vue指令
    • (一)v-bind指令
    • (二)v-on指令
      • 1. 基本使用
        • (1)最基本的语法
      • 2. Vue中获取事件对象(了解)
      • 3. v-on 事件修饰符
      • 4. 按键修饰符
      • 5. 案例:反转字符串

一、Vue指令

  • vue指令, 实质上就是特殊的 html 标签属性, 特点: v- 开头
  • 每个 v- 开头的指令, 都有着自己独立的功能, 将来vue解析时, 会根据不同的指令提供不同的功能

(一)v-bind指令

  • 描述:插值表达式不能用在html的属性上,如果想要动态的设置html元素的属性,需要使用v-bind指令
  • 作用:动态的设置html的属性,数据绑定操作
  • 语法:v-bind:title="msg"
  • 简写::title="msg"
<!-- 完整语法 -->
<a v-bind:href="url"></a>
<!-- 缩写 -->
<a :href="url"></a>
<template>
  <div>
    <h1>v-bing</h1>
    <p>作用:插值表达式适用于行外数据绑定! v-bind用于行内</p>
    <a v-bind:href="msg">你好啊 Vue</a>
    <a :href="msg">你好啊 Vue</a>
  </div>
</template>
<script>
export default {
  data(){
    return{
      msg:"www.baidu.com"
    }
  }
}
</script>
<style>
</style>

(二)v-on指令

1. 基本使用

  • 作用:注册事件
  • 语法:
    ①、 v-on:事件名=“要执行的少量代码"
    ②、v-on:事件名=“methods中的函数名"
    ③、v-on:事件名=“methods中的函数名(实参)"
  • 注意:事件处理函数在methods中提供

(1)最基本的语法

  • <button v-on:事件名="事件函数">按钮</button>,需要在methods中提供事件处理函数
<button v-on:click="fn">搬砖</button>
<button v-on:click="fn1">卖房</button>

// 提供方法
methods: {
  fn () {
    console.log('你好啊')
    // console.log(this)
    //methods中的所有函数都可以通过this访问到当前组件
    this.money++
  },
  fn1 () {
    this.money += 10000
  },
}
  • 需要传递参数
  • <button v-on:事件名="事件函数(参数)">按钮</button>,需要在methods中提供事件函数,接受参数
<template>
  <div>
    <h1>v-on</h1>
    <p>商品数量:{{ num }}</p>
    <p>
      <!-- add(形参) -->
      <button @click="add(7)">+几件</button>
    </p>
  </div>
</template>

<script>
export default {
  data(){
    return{
      num:10
    }
  },methods:{
    add(a){
      //add(实参)
      this.num+=a;
    }
  }
}
</script>

在这里插入图片描述

  • 简写:v-on 可以 简写 成 @
<button @click="money = money+10">加十</button>
<button @click="addMoney(10000)">卖房</button>

2. Vue中获取事件对象(了解)

  • 需求: 默认a标签点击会跳走, 希望阻止默认的跳转, 阻止默认行为 e.preventDefault()
  • vue中获取事件对象
    (1) 没有传参, 通过形参接收 e
    (2) 传参了, 通过$event指代事件对象 e
<template>
  <div>
    <h1>获取事件对象</h1>
    <button @click="fn">btn</button >
  </div>
</template>

<script>
export default {
  methods:{
    fn(e){
      // 执行函数,没有传任何实参,此时形参:打印的就是事件对象!
       console.log(e)
    }
  }
}
</script>

在这里插入图片描述

  • 在下面的代码中,我们通过点击百度一下按钮,按钮不会进行跳转,因为我们在fn方法里面添加了e.preventDefault();
<template>
  <div>
    <h1>获取事件对象</h1>
    <a @click="fn" href="https://www.baidu.com/">百度一下</a>
  </div>
</template>

<script>
export default {
  methods:{
    fn(e){
      e.preventDefault();
    }
  }
}
</script>
  • 在fn1()方法里面传递的第一个值为形参,然后方法a实参传递进去;我们此时还想要一个对象,那么第二个值就必须写$event,这样我们在fn1()方法获取的才是对象。
<template>
  <div>
    <h1>获取事件对象</h1>
    <!-- 问题:又要传实参,又要拿事件对象?? -->
    <div @click="fn1(10,$event)" href="https://www.baidu.com/">百度一下</div>
  </div>
</template>

<script>
export default {
  methods:{
    fn1(a,b){
      //形参:拿实参!还要拿事件对象!
      //     多个值,形参个数也是多个,a,b
      //     实参:值,事件对象必须是$event
      console.log(a,b);
    }
  }
}
</script>

在这里插入图片描述

3. v-on 事件修饰符

  • 事件修饰符:vue提供事件修饰符,可以快速阻止默认行为或阻止冒泡
  • vue中提供的事件修饰符
    .prevent 阻止默认行为(下面代码阻止页面跳转)
    .stop 阻止冒泡
<template>
  <div>
    <h1>事件修饰符</h1>
    <!-- 事件后面加修饰符 .prevent组织阻止默认行为-->
    <a href="https://www.baidu.com" @click.prevent="fn">百度一下</a>
  </div>
</template>

<script>
export default {
  methods:{
    fn(){
      console.log(1);
    }
  }
}
</script>
  • 冒泡:从目标元素,往根元素一层一层的找,如果在它尽力的父辈元素们也注册了同样的事件类型,那么父辈会按照冒泡的顺序也执行了。
<template>
  <div>
    <h1>事件修饰符</h1>
    <div class="father" @click="fn2">
      <div class="son" @click="fn1"></div>
    </div>
  </div>
</template>

<script>
export default {
  methods:{
    fn1(){
      console.log("儿子");
    },
    fn2(){
      console.log("父亲");
    }
  }
}
</script>
<style>
  .father{
    width: 400px;
    height: 400px;
    background-color: rgb(0, 0, 0);
  }
  .son{
    width: 200px;
    height: 200px;
    background-color: #2bff00;
  }
</style>

在这里插入图片描述

  • 那如何阻止上面冒泡事件的发声呢? 直接 .stop 阻止冒泡即可。
<template>
  <div>
    <h1>事件修饰符</h1>
    <div class="father" @click.stop="fn2">
      <div class="son" @click.stop="fn1"></div>
    </div>
  </div>
</template>

<script>
export default {
  methods:{
    fn1(){
      console.log("儿子");
    },
    fn2(){
      console.log("父亲");
    }
  }
}
</script>
<style>
  .father{
    width: 400px;
    height: 400px;
    background-color: rgb(0, 0, 0);
  }
  .son{
    width: 200px;
    height: 200px;
    background-color: #2bff00;
  }
</style>

在这里插入图片描述

4. 按键修饰符

  • 需求: 用户输入内容, 回车, 打印输入的内容
  • 在监听键盘事件时,我们经常需要判断详细的按键。此时,可以为键盘相关的事件添加按键修饰符
  • @keyup.enter 回车 — 只要按下回车才能触发这个键盘事件函数
  • @keyup.esc 返回
    在这里插入图片描述
<div id="app">
  <input type="text" @keyup="fn"> <hr>
  <input type="text" @keyup.enter="fn2">
</div>

5. 案例:反转字符串

<template>
  <div>
    <h1>反转世界</h1>
    <h3>{{ msg }}</h3>
    <button @click="fn">反转</button>
  </div>
</template>

<script>
export default {
  // 思路:
  //  1.点击:肯定注册点击事件
  //  2.字反转,点击后控制字!字符串!
  //  3.字符串一定是个初始化数据变量,控制这个变量,用相应的方法!
  data(){
    return{
      msg:"一大堆文字,你要找麻烦??"
    }
  },
  methods:{
    fn(){
      // 数组
      let arr = this.msg.split("");
      // 反转数组
      let res = arr.reverse();
      // 变为字符串
      let str = res.join("");
      // 重新赋值
      this.msg = str;
    }
  }
}
</script>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/642615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 利用Canvas标签实现动态验证码校验(前端必备附源码)

文章目录 一、前言二、Canvas简介- 什么是Canvas?- Canvas的基本使用 三、动态验证码的具体实现- 在项目中创建 SIdentify.vue 文件- 再创建要使用该组件的文件&#xff0c;App.vue 一、前言 当我们在平时进行登录或者注册账号的时候&#xff0c;往往都会遇到验证动态验证码的…

高级网工必会组网方案,你pick哪一种?

企业组网非常考验网工的内功&#xff0c;选择何种组网方案、合适的网关位置、如何保证网关可靠性等等一系列问题&#xff0c;每个环节都考验网工的理论功底和实操经验。 大型企业如大型医院、银行、省市县政府单位、电厂、汽车行业等&#xff0c;网络的稳定性&#xff0c;往往…

JUC高级-0608

重新看JUC课程&#xff0c;选择周阳讲的JUC 1.前置知识 lombok插件 Lombok是一个Java库&#xff0c;它通过注解的方式&#xff0c;能够在编译时自动为类生成构造函数、getters、setters、equals、hashCode和toString方法&#xff0c;以及其他常用方法&#xff0c;从而使我们…

Monocle3个性化分析作图:拟时热图/拟时基因GO分析/拟时基因趋势分析

Mnocle3往期精彩内容&#xff0c;因为monocle2有问题&#xff0c;且官网也放弃了monocle2&#xff0c;目前用的比较主流的拟时方法就是monocle3了。Mnocle3我们也写过全面的内容&#xff0c;不论是基础的分析还是个性化分析&#xff1a;Monocle3&#xff08;1&#xff09;&…

【C#】并行编程实战:并行编程简介

本章内容为多线程编程入门知识&#xff0c;旨在介绍多线程的特点&#xff0c;以及提供了C#部分基础的多线程API使用。 1、进程与线程 这一小节包含大量概念和基础知识&#xff0c;虽然建议阅读但确实比较枯燥。 可以直接跳到后面的实际应用的章节。 进程 狭义定义&#xff1a;正…

2.数据表的基本操作

SQL句子中语法格式提示&#xff1a; 1.中括号&#xff08;[]&#xff09;中的内容为可选项&#xff1b; 2.[&#xff0c;...]表示&#xff0c;前面的内容可重复&#xff1b; 3.大括号&#xff08;{}&#xff09;和竖线&#xff08;|&#xff09;表示选择项&#xff0c;在选择…

思科(Cisco)7000交换机软件版本升级步骤

思科&#xff08;Cisco&#xff09;交换机软件版本升级步骤 一、准备软件版本 在思科官方网站&#xff08;思科官网传送门&#xff09;下载你需要的系统版本文件&#xff0c;将软件版本准备好拷贝到U盘。 二、准备设备 将交换机加电启动&#xff0c;通过CRT- console进行连接…

使用JMeter进行接口高并发测试

一般的网络接口测试&#xff0c;功能性测试postman较为好用&#xff0c;需要测试高并发的情况下&#xff0c;可以用Jmeter来进行测试&#xff0c;postman是串行&#xff0c;而Jmeter可以多线程并行测试。 官网 Apache JMeter - Apache JMeter™正在上传…重新上传取消https://j…

100个句子记3500个单词

Typical of the grassland dwellers of the continent is the American antelope, or pronghorn. [ˈtɪpɪkl]典型[ˈɡrɑːslnd]草原[dweləz]居民[ˈkɒntɪnənt]大陆 [ˈntɪləʊp] [prɒŋhɔːn] 1.美洲羚羊&#xff0c;或称叉角羚&#xff0c;是该大陆典型的草原动物…

Gradle版本目录(Version Catalog)

Gradle版本目录(Version Catalog) “版本目录是一份依赖项列表&#xff0c;以依赖坐标表示&#xff0c;用户在构建脚本中声明依赖项时可以从中选择。” 我们可以使用版本目录将所有依赖项声明及其版本号保存在单个位置。这样&#xff0c;我们可以轻松地在模块和项目之间共享依…

react-useId

// App.tsx const id Math.random();export default function App() {return <div id{id}>Hello</div> }如果应用是CSR&#xff08;客户端渲染&#xff09;&#xff0c;id是稳定的&#xff0c;App组件没有问题。 但如果应用是SSR&#xff08;服务端渲染&#xff…

Spring Boot 属性配置解析

基于Spring Boot 3.1.0 系列文章 Spring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解Spring Boot banner详解 属性配置介绍 Spring Boot 3.1.0 支持的属性配置方式与2.x版本没有什么变动&#xff0c;按照…

充电桩计量装置TK4800充电机(桩)现场校验仪检定装置

支持同时开展直流充电机现场校验仪和交流充电桩现场校验仪的检定工作&#xff0c;提高检定效率。 专用检定枪线&#xff1a;配有国标直流充电枪线及国标交流充电枪线&#xff0c;可直接接至交直流充电桩&#xff08;机&#xff09;现场校验仪开展检定工作&#xff0c;无需额外…

JMeter从数据库中获取数据并作为变量使用

目录 前言 1、JMeter连接MySQL数据库 2、线程组下新建一个 JDBC Connection Configuration 配置元件 3、实现数据库的查询-单值引用 4、实现数据库的查询-多值引用 总结&#xff1a; 前言 JMeter如何从数据库中获取数据并作为变量使用&#xff1f;这在我们使用JMeter做接…

企业转型在搭建BI时,需要注意什么

如今&#xff0c;商业智能BI在全世界范围内掀起了一股热潮&#xff0c;形成了一个庞大的市场&#xff0c;在信息化时代&#xff0c;企业需要借助BI来进行更好的成长。 在这种全新的社会、商业BI环境下&#xff0c;各行各业的企业都开始寻求探索新的商业模式&#xff0c;通过转…

Vue基本概念、vue-cli和插值表达式的快速使用

一、vue基本概念 &#xff08;一&#xff09;vue介绍 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式javascript框架。 1. 渐进式的概念 渐进式&#xff1a;逐渐增强&#xff0c;可以在项目中使用vue的一部分功能&#xff0c;也可以使用vue的全…

网络安全实战植入后门程序

在 VMware 上建立两个虚拟机&#xff1a;win7 和 kali。 Kali&#xff1a;它是 Linux 发行版的操作系统&#xff0c;它拥有超过 300 个渗透测试工具&#xff0c;就不用自己再去找安装包&#xff0c;去安装到我们自己的电脑上了&#xff0c;毕竟自己从网上找到&#xff0c;也不…

GitHub 上“千金难求”!啃完这两本书,Spring在你面前便没有秘密

前言 Spring对Java程序员的重要性相信懂的都懂&#xff0c;夸张点甚至可以说是Spring成就了Java。 为什么说要啃这两本书。前者告诉你怎么用Spring&#xff0c;后者给你简单展示如何用的同时&#xff0c;还告诉你Spring是怎么实现的两者一起&#xff0c;让你知其然并知其所以…

在字节打酱油6年,被淘汰?太真实了...

涛子哥普通本科计算机专业毕业&#xff0c;目前在字节&#xff0c;部门是视频云中台。现在比较稳定&#xff0c;生活也算美满&#xff0c;算是个资深的打酱油高手&#xff0c;在字节也有6、7年左右的划水经验了。 刚好划水的时候在某乎上看到了一个问题&#xff1a;“软件测试会…

2023年Q1天猫电脑品类数据分析(含笔记本、游戏本、平板电脑)

目前&#xff0c;PC市场中正经历新旧产品的换代&#xff0c;在各行业消费复苏的背景下&#xff0c;PC市场的整体市场需求也有回暖的可能。结合鲸参谋平台上第一季度的销售数据&#xff0c;我们一起来看一看电脑市场当前的销售表现如何&#xff01; 笔记本电脑 尽管人们的消费需…