3.vue 指令

news2024/11/27 6:35:25

3.10 v-text和v-html

更新 DOM 对象的 innerText innerHTML

  • 语法:

    • v-text="vue数据变量"

    • v-html="vue数据变量"

  • 注意: 会覆盖插值表达式

 v-text 把值当成普通字符串显示

 v-html 把值当做 html  解析

<template>
  <div>
    <p v-text="str"></p>
    <p v-html="str"></p>
      <!-- 注意: v-text或v-html会覆盖插值表达式 -->
  </div>
</template>
​
<script>
export default {
  data() {
    return {
      str: "<span>我是一个span标签</span>"
    }
  }
}
</script>

3.11 v-show和v-if

控制标签的隐藏或出现

v-if:指令用于条件性地渲染一块内容。

这块内容只会在指令的表达式返回 true 值的时候被渲染。

  • 用法:

    • v-if :在 <template> 元素上使用 v-if 条件渲染分组

    • 因为 v-if 是一个指令,所以必须将它添加到一个元素上。但是如果想切换多个元素呢?此时可以把一个 <template> 元素当做不可见的包裹元素,并在上面使用 v-if。最终的渲染结果将不包含 <template> 元素。

    • v-show:不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS property display。

    • 注意,v-show 不支持 <template> 元素,也不支持 v-else

  • 语法:

    • v-show="vue变量"

    • v-if="vue变量"

代码案例:

<template>
  <div>
    <div>
      <p v-if="age >=18">我成年了,可以看电影</p>
      <!-- <p v-if="age<=18">未成年禁止看电影</p> -->
      <p v-else>还需要等几年</p>
    </div>
  </div>
</template>
<script>
export default {
    data(){
        return{
         age: 15
        };
    }
    
}
</script>

<template> 元素上使用 v-if 条件渲染分组

<template>
  <div>
    <div>
      <p v-if="age >=18">我成年了,可以看电影</p>
      <!-- <p v-if="age<=18">未成年禁止看电影</p> -->
      <p v-else>还需要等几年</p>
      <template v-if="age>=18">
        <p>电影名字:{{videName}}</p>
        <p>年龄:{{age}}</p>
        <p>电影时常:{{time}}</p>
      </template>
    </div>
  </div>
</template>
<script>
export default {
    data(){
        return{
         age: 18,
         videName:"超能人",
         time:"1h20m"
        };
    }
    
}
</script>
  • 原理

    • v-show 用的display:none隐藏 (频繁切换使用)

    • v-if 直接从DOM树上移除

  • 高级

    • v-else使用

v-show代码示例

<template>
    <div>
      <p v-show="sex=='man'">男生</p>
      <p v-show="sex=='woman'">小女生</p>
    </div>
</template>
<script>
export default {
    data(){
        return{
         sex:"woman"
        };
    }
}
</script>

v-if和v-show的区别:

<template>
    <!--
        带有v-show的元素始终会被渲染并保留在Dom中,主要作用 频繁切换页面状态的时候使用
        v-if:对应false的时候,对应的元素和子元素都不会渲染,
        v-if主要是控制dom元素的创建和销毁,运行时条件很少改变的元素,也就时一次性选择的那种
      -->
    <p v-if="isshow">v-if标题页面</p>
    <p v-show="!isshow">v-show标题页面</p>
    <button @click="isshow=!isshow">切换页面</button>
</template>
<script>
export default {
    data(){
        return{
        isshow:"true"
        };
    }
}
</script>

 

 原理
  • v-show 用的display:none隐藏 (频繁切换使用)

  • v-if 直接从DOM树上移除

综合示例:

<template>
  <div>
      <!-- v-show 或者 v-if
       v-show="vue变量"
       v-if="vue变量"
     -->
    <h1 v-show="isOk">v-show的盒子</h1>
    <h1 v-if="isOk">v-if的盒子</h1>
​
    <div>
         <!-- 
      v-show隐藏: 采用display:none   // 频繁切换
      v-if隐藏:   采用从DOM树直接移除 // 移除
     -->
      <p v-if="age > 18">我成年了</p>
      <p v-else>还得多吃饭</p>
    </div>
  </div>
</template>
​
<script>
export default {
  data() {
    return {
      isOk: true,
      age: 15
    }
  }
}
</script>

使用v-show和v-if以及v-else指令, 方便通过变量控制一套标签出现/隐藏

案例编辑-折叠面板

此案例使用了less语法, 项目中下载模块

npm install less@4.1.2 less-loader@6.2.0 -D
或者
npm install less@4.1.2
npm install less-loader@6.2.0 -D

代码实现:

<template>
  <div >
    <div id="app01">
        <h3>案例:折叠面板</h3>
        <div>
            <div class="title">
                <h4>程序员之路</h4>
                <!-- 1.绑定点击事件 -->
                <span class="btn" @click="btn">
                <!-- 4. 根据isShow的值显示不同文字 -->
                {{ isShow ? '收起' : '展开'}}
                </span>
            </div>
            <!-- 2. v-show配合变量来控制标签隐藏出现 -->
            <div class="container" v-show="isShow">
                <p>少时狂把编程想,</p>
                <p>无畏赴身IT行。</p>
                <p>纵使荣华未可近,</p>
                <p>我自coding又何妨!</p>
            </div>
        </div>
    </div>
  </div>
</template>
<script>
export default {
    data(){
        return{
            isShow:"true"
        }
    },
    methods: {
        btn(){
             // 3. 点击时, 把值改成false
            this.isShow=!this.isShow
        }
    }
}
</script>
<style lang="less">
    body{
        background-color: #CCC;
        #app01 {
            width: 400px;
            margin: 20px auto;
            background-color: #fff;
            border: 4px solid blueviolet;
            border-radius: 1em;
            box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.5);
            padding: 1em 2em 2em;
         h3 {
            text-align: center;
            }
        .title {
            display: flex;
            justify-content: space-between;
            align-items: center;
            border: 1px solid #ccc;
            padding: 0 1em;
            }
        .title h4 {
            line-height: 2;
            margin: 0;
            }
        .container {
            border: 1px solid #ccc;
            padding: 0 1em;
            }
        .btn {
            /* 鼠标改成手的形状 */
            cursor: pointer;
        }
    }
}
​
</style>

3.12 v-for

 列表渲染, 所在标签结构, 按照数据数量, 循环生成

  • 语法

    • v-for="(值, 索引) in 目标结构"

    • v-for="值 in 目标结构"

  • 目标结构:

    • 可以遍历数组 / 对象 / 数字 / 字符串 (可遍历结构)

  • 注意:v-for的临时变量名不能用到v-for范围外

v-for入门程序:

<template>
  <div >
    <!--v-for 基本使用 v-for 指令需要使用 item in items 形式的特殊语法,
    其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名-->
    <ul>
        <li v-for="item in person" :key="item">{{item}}</li>
    </ul>
    <!--获取下标的方式
    v-for 还支持一个可选的第二个参数,即当前项的索引。 
    用法:(item , index)
    -->
    <ul>
        <!-- <li v-for="(item,index) in person" :key="item">{{item}}--{{index}}</li> -->
        <li v-for="(item,index) in person" :key="item">
            {{parentMessage}}--{{item.message}}--{{index}}</li>
    </ul>
     <!--使用of 代替in-->
    <ul>
        <li v-for="(item,index) of person" :key="item">{{item.message}}--{{index}}</li>
    </ul>
    
  </div>
</template>
<script>
export default {
    data(){
        return{
            parentMessage:"parent",
            //person:["佩奇","乔治","小猪"]
            person:[{message:"佩奇"},{message:"乔治"},{message:"小猪"}]
        }
    }
    
}
</script>

v-for 里使用对象你也可以用 v-for 来遍历一个对象的 property。

<template>
  <div >
    <!--在v-for中使用对象,item 代表的是value值,key代表的是key健值-->
    <ul>
        <!-- <li  v-for="item in personObj" :key="item">{{item}}</li> -->
        <li  v-for="(item,key) of personObj" :key="key">
            {{key}}--{{item}}
        </li> 
    </ul>
    <!--用第三个参数作为索引-->
    <ul>
        <!-- <li  v-for="item in personObj" :key="item">{{item}}</li> -->
        <li  v-for="(item,key,index) of personObj" :key="index">
            {{key}}--{{index}}--{{item}}
        </li> 
    </ul>
  </div>
</template>
<script>
export default {
    data(){
        return{
            personObj:{
                name:'佩奇',
                age:'18',
                sex:'女',
                birthday:'2023-03-20'
            }
        }
    }
    
}
</script>

综合案例演示:

<template>
  <div id="app">
    <div id="app">
      <!-- v-for 把一组数据, 渲染成一组DOM -->
      <!-- 口诀: 让谁循环生成, v-for就写谁身上 -->
      <p>学生姓名</p>
      <ul>
        <li v-for="(item, index) in arr" :key="item">
          {{ index }} - {{ item }}
        </li>
      </ul>
​
      <p>学生详细信息</p>
      <ul>
        <li v-for="obj in stuArr" :key="obj.id">
          <span>{{ obj.name }}</span>
          <span>{{ obj.sex }}</span>
          <span>{{ obj.hobby }}</span>
        </li>
      </ul>
​
      <!-- v-for遍历对象(了解) -->
      <p>老师信息</p>
      <div v-for="(value, key) in tObj" :key="value">
        {{ key }} -- {{ value }}
      </div>
​
      <!-- v-for遍历整数(了解) - 从1开始 -->
      <p>序号</p>
      <div v-for="i in count" :key="i">{{ i }}</div>
    </div>
  </div>
</template>
​
<script>
export default {
  data() {
    return {
      arr: ["小明", "小欢欢", "大黄"],
      stuArr: [
        {
          id: 1001,
          name: "孙悟空",
          sex: "男",
          hobby: "吃桃子",
        },
        {
          id: 1002,
          name: "猪八戒",
          sex: "男",
          hobby: "背媳妇",
        },
      ],
      tObj: {
        name: "小黑",
        age: 18,
        class: "1期",
      },
      count: 10,
    };
  },
};
</script>

vue最常用指令, 铺设页面利器, 快速把数据赋予到相同的dom结构上循环生成

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

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

相关文章

关于自动化测试框架pytest的Fixture固件

这篇文章主要介绍了关于自动化测试框架pytest的Fixture固件,Fixture它其实就是一些函数,会在执行测试方法/测试函数前后加载运行它们,需要的朋友可以参考下 目录 什么是固件定义方式调用方式使用fixture传递测试数据conftest.py作用域总结 什么是固件 Fixture 翻译成中文即是固…

无效目标发行版问题解决记录

​ SpringMVC之‘无效目标发行版’ 问题&#xff1a;上死亡截图 问题解决思路&#xff1a;这是由于JDK版本不匹配导致的错误。 首先说一下问题的关键所在&#xff0c;然后再细说解决步骤&#xff1a; 遇到这个问题的朋友大概率都是在写Spring项目时遇到的&#xff0c;这就需要M…

H3C-HCL模拟器常用命令及其操作演示

一、实验拓扑图 二、实验设备 设备1&#xff1a;路由器"MSR36-20"&#xff1b; 设备2&#xff1a;真机&#xff1b; 三、常用命令 1&#xff09;进入用户视图&#xff1a;启动默认就是用户视图 "< >" 2&#xff09;进入系统视图&#xff1a;"…

揭示GPT Tokenizer的工作原理

在GPT模型中&#xff0c;tokenization&#xff08;词元化&#xff09;指的是将用户输入的文本分割成token&#xff08;词元&#xff09;的过程&#xff0c;以让GPT能更好地理解输入文本的词义、句法和语义&#xff0c;以及生成更连贯的输出内容。这是非常重要的预处理操作&…

C++AVL树

目录&#xff1a; AVL树的概念AVL树节点的定义更新平衡因子 AVL树的旋转AVL树的验证AVL的整体实现 AVL树的删除AVL树的性能 总结 AVL树的概念 AVL树&#xff1a;二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找…

CAPL硬件控制课程,物理故障注入自动化以及程控电源

&#x1f4d9; CAN/LIN总线物理故障注入&#xff0c;自动化解决方案 车载网络通讯的健壮性和故障恢复能力至关重要&#xff0c;所以我们需要对控制器进行各种物理容错测试&#xff0c;常规情况下我们需要注入如下8种物理故障注入&#xff1a;CANH断路&#xff0c;CANL断路,CANH…

Redux的基础操作和思想

什么是Redux? Redux是JavaScript应用的状态容器&#xff0c;提供可预测的状态管理! Redux除了和React一起用外&#xff0c;还支持其它框架;它体小精悍(只有2kB&#xff0c; 包括依赖)&#xff0c;却有很强大的插件扩展生态! Redux提供的模式和工具使您更容易理解应用程序中的…

管理类联考——英语——趣味篇——完型填空

完型填空解题秘籍 一、答案分配规律 历年完型答案统计 A B C D 2010 DCBAA/BDCBA/CDDAC/BDCAB 5 5 5 5 2011 ACBDD/BACCB/DBACA/ADACD 6 4 5 5 2012 BBAAC/DAACB/DBCDD/ACCBD 5 5 5 5 2013 ADBDC/BBDBA/ADCCC/CABAD 5 5 5 5 2014 BACAD/ACCDB/ABCDB/DADCB 5 5 5 5 2015 CDC…

leetcode199. 二叉树的右视图(java)

二叉树的右视图 leetcode199. 二叉树的右视图题目描述 广度优先遍历二叉树专题 leetcode199. 二叉树的右视图 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/binary-tree-right-side-view 题目描述 给定一个二叉树的 根…

Python之del析构方法_、call__方法、方法没有重载

一、__del__方法(析构函数)和垃圾回收机制 __del__()称为“析构方法”&#xff0c;用于实现对象被销毁时所需的操作。比如&#xff1a;释放对象占用的资源&#xff0c;例如&#xff1a;打开的文件资源、网络连接等。 Python实现自动的垃圾回收&#xff0c;当对象没有被引用时&…

【AUTOSAR】UDS协议的代码分析与解读(四)----UDS 否定应答服务

6 全局信号需求 一些用于诊断功能的全局信号&#xff0c;应通过整车网络广播至所有的电控单元。信号应包含但不限于如下 所有列&#xff1a; 1) 日期和时间&#xff1b; 2) 蓄电池电压&#xff1b; 3) 点火开关信号&#xff0c; 包括OFF、ACC、ON、START&#xff1b; 4) …

【从删库到跑路】MySQL系列——详细讲解SQL的DDL,DML,DQL,DCL语句

&#x1f38a;专栏【MySQL】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;关系型数据库⭐概念⭐特点 &#x1f354;MySQL数…

今天面了个支付宝拿35K出来的测试,真是砂纸擦屁股,给我露了一手啊

今年的春招已经开始了&#xff0c;很多小伙伴收获不错&#xff0c;有的已经拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#xff0…

算法之迷宫解法

系列文章目录 文章目录 系列文章目录前言一、迷宫是什么&#xff1f;二、迷宫的生成迷宫的数据结构二维数组图 Prim算法生成地图什么是Prim算法&#xff1f;使用Prim对迷宫生成的实现 三、迷宫的解法深度优先遍历&#xff08;DFS&#xff09; 前言 前几天刷抖音刷到一个迷宫解…

鲸落送书第一期清华出版社系列丛书

1.《Rust项目开发实战》 《Rust项目开发实战》详细阐述了与Rust语言开发相关的基本解决方案&#xff0c;主要包括Rust语言简介、存储和检索数据、创建REST Web服务、创建完整的服务器端Web应用程序、利用Yew创建客户端WebAssembly应用程序、利用quicksilver创建WebAssembly游戏…

【Logback技术专题】「入门到精通系列教程」深入探索Logback日志框架的原理分析和开发实战技术指南(上篇)

深入探索Logback日志框架的原理分析和开发实战指南系列 Logback日志框架Logback基本模块logback-corelogback-classiclogback-accessLogback的核心类LoggerAppenderLayoutLayout和Appender filterlogback模块和核心所属关系 Logbackj日志级别日志输出级别日志级别介绍 Logback的…

MM32F3273G8P火龙果开发板MindSDK开发教程19 - littlefs文件系统的移植

MM32F3273G8P火龙果开发板MindSDK开发教程19 - littlefs文件系统的移植 1、littlefs简介 LittleFS 由ARM官方发布&#xff0c;ARM mbedOS的官方推荐文件系统&#xff0c;具有轻量级&#xff0c;掉电安全的特性。主要用在微控制器和flash上&#xff0c;特点如下&#xff1a; 掉…

java中的多线程、同步代码块、同步方法、锁

一、java中实现多线程的三种方式 &#xff08;1&#xff09;继承Thread类的方式进行实现&#xff1b; &#xff08;2&#xff09;实现Runnable接口的方式进行实现&#xff1b; &#xff08;3&#xff09;利用Callable接口和Future接口方式实现。 1.继承Thread类的方式进行实现 …

【性能优化】性能优化

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 性能优化运行效率![在这里插入图片描述](https://img-blog.csdnimg.cn/557680b0ca51484c9c2c6c2…

金升阳|三极管的开关速度如何提高?

​三极管是一种常见的电子器件&#xff0c;广泛应用于电路中。它的开关速度是指从关断到导通或从导通到关断的转换速度。提高三极管的开关速度可以提高电路的响应速度&#xff0c;从而提高系统的性能。本文将介绍一些常见的方法来提高三极管的开关速度。 一、选择合适的三极管 …