Vue.js:v-text 和v-html(解析)、v-show和v-if(控制标签显示或隐藏)、Vue指令:v-for(遍历)

本文详细介绍了Vue.js中四个重要的指令:v-text和v-html用于文本内容的显示,v-if和v-show用于条件渲染,以及v-for用于数据遍历。v-text将内容作为纯文本显示,v-html则解析HTML标签。v-if在DOM树上直接操作,v-show通过CSS控制显示。v-for可遍历数组、对象等,注意避免变量名冲突和唯一key的使用。文章通过实例展示了这些指令的用法和区别。
摘要由CSDN通过智能技术生成

1、v-text 和v-html(解析)

语法:

  • v-html=“vue数据变量”
  • v-text=“vue数据变量”
<template>
  <div>
    <p v-html="str"></p>
    <p v-text="str"></p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      str: "<span>我是一个span标签</span>"
    }
  }
}
</script>

v-html把值当做html解析 v-text把值当做普通的字符串解析

在这里插入图片描述

和插值表达式的区别:
1、会覆盖插值表达式,插值表达式把值当成普通字符串显示
2、v-html把值当成标签进行解析显示

2、Vue指令:v-show和v-if(控制标签显示或隐藏)

这两个指令的共同点:都可以控制标签显示或隐藏,给变量赋予true/false,显示/隐藏

不同点:v-show是用css方式显示/隐藏标签,v-if直接从DOM树上添加/移除,v-if可以配合v-else使用

  • 语法:
    • v-show=“vue变量”
    • v-if=“vue变量”
  • 原理
    • v-show 用的display:none隐藏 (频繁切换使用)
    • v-if 直接从DOM树上移除(属于一个销毁和创建的过程)

高级:v-else使用

<template>
  <div>
    <h1 v-show="isOk">v-show的盒子</h1>
    <h1 v-if="isOk">v-if的盒子</h1>

    <div>
        //相当于if else语句
      <p v-if="age > 18">我成年了</p>
      <p v-else>还得多吃饭</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isOk: true,
      age: 15
    }
  }
}
</script>

3、Vue指令:v-for(遍历)

语法

  • v-for=“(值变量, 索引变量) in 目标结构” :key = “值”
  • v-for=“值变量 in 目标结构” :key = “值”

目标结构:可以遍历数组 / 对象 / 数字 / 字符串

注意点:v-for的临时变量名不能用到v-for范围外,同级标签的key值不能重复,in两边必须有空格

遍历数组:

<template>
  <div id="app">
      <!-- v-for 把一组数据, 渲染成一组DOM -->
      <!-- 口诀: 让谁循环生成, v-for就写谁身上 -->
      <p>学生姓名</p>
      <ul>
          //item是数组元素,index是索引号,arr是遍历对象
        <li v-for="(item, index) in arr" :key="index">
          {{ index + 1 }} - {{ item }}
        </li>
      </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      arr: ["酸菜", "土豆", "酸辣粉"]
  }
}
</script>

遍历数组对象

<template>
  <div id="app">
      <!-- 省略其他 -->
      <p>学生详细信息</p>
      <ul>
          //key值可以是索引号,但是有id的情况下,推荐使用对象的id
        <li v-for="obj in stuArr" :key="obj.id">
          <span>{{ obj.name }}</span>
          <span>{{ obj.gender }}</span>
          <span>{{ obj.hobby }}</span>
        </li>
      </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // ...省略其他
      stuArr: [
        {
          id: 1001,
          name: "翠花",
          gender: "女",
          hobby: "玩悠米",
        },
        {
          id: 1002,
          name: "酸菜",
          gender: "男",
          hobby: "摸鱼",
        }
      ]
    }
  }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒来暑往秋收冬藏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值