2、事件修饰符、双向绑定、style样式使用、v-for循环遍历、v-if 和 v-show

news2024/11/19 20:41:27

一、事件修饰符

1、.stop 阻止冒泡事件

  • 给谁加了阻止冒泡事件,谁下面的盒子就不会执行了
<div id="app">
    <div class="parent" @click="log3">
        <div class="child" @click="log2">
            <button @click.stop="log1">我是按钮</button> // 输出1111
        </div>
    </div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            log1() { console.log(11111111111); },
            log2() { console.log(222222222222); },
            log3() { console.log(3333333333); }
        },
    })
</script>

2、.capture 添加事件捕获

  • 给谁加捕获事件,谁先触发
<div id="app">
    <div class="parent" @click="log3">
        <div class="child" @click.capture="log2"> //先输出22222 然后 1111 33333
            <button @click="log1">我是按钮</button> 
        </div>
    </div>
    </div>

3 、.self 点击他的时候触发

  • 只有在点击的时候才可以触发
<div id="app">
    <div class="parent" @click="log3">
    //点击2  触发222 333
        <div class="child" @click.self="log2">
            <button @click="log1">我是按钮</button>
            //点击1 触发 111 333
        </div>
    </div>
</div>

4、.once只触发一次

<div id="app">
    <div id="one" @click="one">
    <!-- 给two盒子的点击事件添加.once修饰符 -->
        <div id="two" @click.once="two">
            <div id="three" @click="three"></div>
        </div>
    </div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            one() { console.log('单击one盒子了'); },
            two() { console.log('单击two盒子了'); },
            three() { console.log('单击three盒子了'); }
        }
    })
</script>

5、.prevent 阻止默认事件

<div id="app">
    <!-- 给链接标签的点击事件添加.prevent修饰符 -->
    <a href="#" @click.prevent="tap">点击链接</a>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            tap() {
                console.log('阻止默认事件');
            }
        }
    })
</script>

二、v-model 数据双向绑定(表单控件)

  • 原理:通过数据劫持结合订阅模式的方式来实现的,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。
  • 指令 v-model
<div id="app">
    <input type="text" v-model:value=first> + <input type="text" v-model:value=second> <button @click="add">=</button> <input type="text" v-model:value=result>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            first: '',
            second: '',
            result: ''
        },
        methods: {
            add() {
                // 获取到的input框的value值都是字符串类型
                this.result = Number(this.first) + Number(this.second)
            }
        }
    })
</script>

image-20240322183107537

三、样式的使用

    <style>
        .red { color: red; }
        .fs30 { font-size: 30px; }
    </style>

1、class(4钟)

数组

<body>
    <div id="app">
        <div :class="[class1,class2]">字体30px、红色字</div>
        <!-- 等价于 -->
        <div class="red fs30">字体30px、红色字</div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            class1: 'red',
            class2: 'fs30'
        },
        methods: {}
    })
</script>

三目表达式

<div id="app">
<!-- age=10 满足age<18 所以class=class1 -->
    <div :class="age<18?class1:class2">未成年人</div>
<!-- 等价于 -->
    <div :class="age<18?'red':'fs30'">未成年人</div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            age: 10,
            class1: 'red',
            class2: 'fs30'
        },
        methods: {}
    })
</script>

对象

<div id="app">
    <div :class="{red:true}">显示红色字体</div>
    <div :class="{'red':true}">显示红色字体</div>
    <div :class="{'red':flag}">显示红色字体</div>
    <div :class="{'red':'flag'}">显示红色字体</div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            flag: true
        },
        methods: {}
    })
</script>

数组内置对象

<div id="app">
    <div :class="[{red:true},{fs30:flag}]">红色字体、字号30px</div>
    <div :class="[{'red':flag},{fs30:'flag'}]">红色字体、字号30px</div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            flag: true
        },
        methods: {}
    })
</script>

2、style(3钟)

对象

    <div id="app">
        <div :style=style1>红色字体</div>
        <div :style=style2>字号30px、字体加粗</div>
    </div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            style1: 'color:red',
            style2: {
                fontSize: "30px",
                "font-weight": 700
            }
        },
        methods: {}
    })
</script>

数组内置对象

    <div id="app">
        <div :style='[style1,style2]'>红色字体、字号30px、字体加粗</div>
    </div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            style1: {
                'color': 'red'
            },
            style2: {
                fontSize: "30px",
                "font-weight": 700
            }
        },
        methods: {}
    })
</script>

函数返回值

<body>
    <div id="app">
        <div :style='getStyle()'>字号30px、字体红色</div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#app",
        data: {},
        methods: {
            getStyle() {
                return {
                    color: 'red',
                    fontSize: "30px",
                }
            }
        }
    })
</script>

3、v-for

遍历数组

<body>
    <div id="app">
        <!-- item:数组的每一项   index:数组的索引(索引从0开始) -->
        <div v-for="(item,index) in list" :key="item">{{item}}</div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            list: [ 1, 2, 3, 4 ]
        },
        methods: {}
    })
</script>

遍历对象

<body>
    <div id="app">
        <!-- value:值   key:键   index:索引 -->
        <div v-for="(value,key,index) in obj" :key="value">{{value}}</div>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            obj: {
                name1: '小明',
                name2: '小红',
                name3: '小花',
                name4: '小亮',
            }
        },
        methods: {}
    })
</script>

遍历数字

<div v-for="num in 10">{{num}}</div>

  • key
    • 必须是唯一值
    • 必须是数字或者字符串
    • 作用:提高重排效率,就地复用

4、v-if 和 v-show

  • 相同点:都可以进行元素的隐藏
  • 不同点:
    • v-if:通过删除DOM元素进行隐藏,v-show通过display:none;进行隐藏
  • 应用场景:
    • v-show:用于少次的切换,v-show应用于频繁的切换
<div id="app">
    <div v-if="isShow">v-if,变量为布尔值,为true才渲染Dom</div>
    <div v-show="isShow">v-show,变量为布尔值,为true才渲染Dom</div>
    <div v-if="false">v-if通过删除dom元素来实现</div>
    <div v-show="false">v-show是设置display:none来实现</div>
  <!-- v-if可以和v-else-if、v-else 一起结合使用,但是中间不能加dom内容 -->
	<!--   age=35,满足age<30 显示青年     -->
    <div v-if="age<18"> 少年</div>
    <div v-else-if="age<30"> 青年</div>
    <div v-else-if="age<60"> 中年</div>
    <div v-else> 老年</div>
</div>
<script>
    let vm = new Vue({
        el: "#app",
        data: {
            isShow: true,
            age: 35
        },
        methods: {}
    })
</script>

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

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

相关文章

IAB欧洲发布首张泛欧洲数字零售媒体能力矩阵图

2024年1月18日&#xff0c;互动广告署-欧洲办事处&#xff08;IAB Europe)发布了首张泛欧洲数字零售媒体能力矩阵图。为媒体买家提供的新资源概述了在欧洲运营的零售商提供的现场、场外和数字店内零售媒体广告机会。 2024年1月18日&#xff0c;比利时布鲁塞尔&#xff0c;欧洲领…

Spring详解,代码事例,IOC,AOP,事务。整合MyBatis,JUnit

Spring核心 核心概念 代码书写现状 耦合度偏高 解决方案 使用对象时&#xff0c;在程序中不要主动使用new产生对象&#xff0c;转换为由外部提供对象 IOC ( Inversion of Control )控制反转 对象的创建控制权由程序转移到外部&#xff0c;这种思想称为控制反转使用对象时&…

2024年C语言最新经典面试题汇总(1-10)

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

Structured Knowledge Distillation for Accurate and Efficient Object Detection

摘要 许多之前的知识蒸馏方法是为图像分类而设计的&#xff0c;在具有挑战性的任务&#xff08;如目标检测&#xff09;中失败。本文首先提出了知识蒸馏在目标检测中失败的主要原因是&#xff1a;&#xff08;1&#xff09;前景和背景之间不平衡&#xff1a;(2)缺乏对不同像素…

NLP 笔记:Latent Dirichlet Allocation (介绍篇)

1 问题介绍 假设我们有一堆新闻&#xff0c;每个新闻都有≥1个主题 我们现在只知道新闻的内容&#xff0c;我们希望一个算法&#xff0c;帮我们把这些新闻分类成主题人类可以根据每个每个文章里面的单词判断主题&#xff0c;那计算机怎么做呢&#xff1f; ——>LDA(Latent D…

一文详解Rust中的字符串

有人可能会说&#xff0c;字符串这么简单还用介绍&#xff1f;但是很多人学习rust受到的第一个暴击就来自这浓眉大眼、看似毫无难度的字符串。 请看下面的例子。 fn main() {let my_name "World!";greet(my_name); }fn greet(name: String) {println!("Hello…

HTML元素语义化补充之css函数(三)

文章目录 CSS中的函数css函数–varcss函数–calccss函数–blurcss函数–gradientlinear-gradient的使用 CSS中的函数 ◼ 在前面我们有使用过很多个CSS函数: 比如rgb/rgba/translate/rotate/scale等; CSS函数通常可以帮助我们更加灵活的来编写样式的值&#xff1b; ◼ 下面有几…

亚稳态及其解决办法

异步电路 亚稳态 亚稳态亚稳态的产生原因什么是同步异步信号怎么消除亚稳态 亚稳态 在数字电路中&#xff0c;每一位数据不是1&#xff08;高电平&#xff09;就是0&#xff08;低电平&#xff09;。当然对于具体的电路来说&#xff0c;并非1&#xff08;高电平&#xff09;就是…

学习Python的第一天(下载Python环境和工具Pycharm)

下载工具 PyCharm Community Edition 2023.3.4 下载环境 Python3.10.4 目录 1.环境Python下载 1.1 Python环境变量下载网址: 1.2 下载步骤 2.工具Pycharm下载 2.1 pycharm下载网址 2.2 pycharm下载步骤 1.环境Python下载 1.1 Python环境变量下载网址: Python Releas…

在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群

在离线的arm架构kylin v10服务器上使用Kuboard-Spray搭建K8S集群 在内网项目中需要安装K8S集群&#xff0c;经过调研&#xff0c;选择使用Kuboard-Spray工具搭建K8S集群&#xff0c;降低学习成本&#xff0c;提高安装效率。 为了简化安装使用集群的过程&#xff0c;搭建了私有…

01.家目录及桌面的认识(Linux基本概念)

知识引入&#xff1a; 我们在打开我们的电脑后&#xff0c;直接就可以看到图形化界面&#xff0c;这个图形化的界面就是我们常说的桌面。同时我们的电脑还可以多用户使用&#xff0c;就是在电脑开机的时候&#xff0c;选择用户&#xff0c;输入密码。这就说明&#xff0c;我们的…

java数据结构与算法基础-----字符串------正则表达式的练习案例---持续补充中

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 正则表达式基础&#xff1a;https://blog.csdn.net/grd_java/article/det…

零基础-MySQL数据库的基本操作

①MYSQL数据库基本操作-DDL 1.DDL的解释 DDL&#xff08;Data Definition Language&#xff09;&#xff0c;数据定义语言&#xff0c;包括以下内容&#xff1a; 对数据库的常用操作 对表结构的常用操作 修改表结构 2.对数据库的常用操作 功能SQL查看所有的数据库show d…

阿猪写作能用吗 #媒体#微信

阿猪写作是一个非常实用的论文写作工具&#xff0c;它不仅能帮助用户快速完成论文写作&#xff0c;还可以提供查重降重的功能&#xff0c;帮助用户确保论文的原创性。在当今社会&#xff0c;论文写作是学术界和科研领域最重要的工作之一&#xff0c;而阿猪写作的出现无疑是给这…

使用阿里云服务器搭建网站教程,超简单10分钟网站上线

使用阿里云服务器快速搭建网站教程&#xff0c;先为云服务器安装宝塔面板&#xff0c;然后在宝塔面板上新建站点&#xff0c;阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例&#xff0c;来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

JVM——运行时数据区

前言 由于JAVA程序是交由JVM执行的&#xff0c;所以我们所说的JAVA内存区域划分也是指的JVM内存区域划分&#xff0c;JAVA程序具体执行的过程如下图所示。首先Java源代码文件会被Java编译器编译为字节码文件&#xff0c;然后由JVM中的类加载器加载各个类的字节码文件&#xff0…

RabbitMQ之Plugins插件----AMQP对接MQTT

1.启用插件 rabbitmq-plugins enable rabbitmq_mqtt 2.检查是否启动成功&#xff0c;打开rabbitmq后台 3.概念&#xff1a; AMQP是由交换器和queue队列组成的消息队列机制&#xff0c;MQTT是由订阅主题组成的消息机制 1.MQTT创建连接时会向rabbitmq创建一个自己的queue&…

信号处理之快速傅里叶变换(FFT)

信号处理之快速傅里叶变换FFT 历史溯源欧拉公式傅里叶级数(FS)傅里叶变换(FT)离散傅里叶级数(DFS)离散时间傅里叶变换(DTFT)离散傅里叶变换(DFT)快速傅里叶变换(FFT)MATLAB中常用的FFT工具FFT中常见的问题 历史溯源 相信很多人知道傅里叶变换&#xff0c;但是很多人对傅里叶变…

【Monero】Onion Monero Blockchain Explorer | 洋葱门罗币区块链浏览器

github&#xff1a;onion-monero-blockchain-explorer Onion Monero Blockchain Explorer特点: 没有cookie&#xff0c;没有网络分析跟踪器&#xff0c;没有image&#xff0c; 开源&#xff0c; 完全用C编写&#xff0c; 显示加密的付款 ID&#xff0c; 显示环签名&#xff0c;…

C# WPF编程-控件

C# WPF编程-控件 概述WPF控件类别包括以下控件&#xff1a;背景画刷和前景画刷字体文本装饰和排版字体继承字体替换字体嵌入文本格式化模式鼠标光标 内容控件Label&#xff08;标签&#xff09;Button&#xff08;按钮&#xff09; 概述 在WPF领域&#xff0c;控件通常被描述为…