Vue 指令 (前)

61 阅读2分钟

Vue 会根据不同的【指令】,针对标签实现不同的【功能】

指令:带有 v-前缀 的特殊标签属性,不同属性对应不同的功能

1.v-html:

作用:设置元素的 innerHTML

语法:v-html = "表达式 "

<div id="app">
    <div v-html="msg"></div> 
 </div>
  
  <script src="./vue.js"></script>
  <script>

    const app = new Vue({
      el: '#app',
      data: {
        msg: `<a href="https://cn.vuejs.org/">Hello Vue.js</a>`
      }
    })

  </script>

2.v-show

  1. 作用: 控制元素显示隐藏

  2. 语法: v-show = "表达式" 表达式值 true 显示, false 隐藏

  3. 原理: 切换 display:none 控制显示隐藏

  4. 场景: 频繁切换显示隐藏的场景

3.v-if

  1. 作用: 控制元素显示隐藏(条件渲染)

  2. 语法: v-if = "表达式" 表达式值 true 显示, false 隐藏

  3. 原理: 基于条件判断,是否创建或移除元素节点

  4. 场景: 要么显示,要么隐藏,不频繁切换的场景

4.v-if与v-show的区别

v-show 底层原理:切换 css 的 display: none 来控制显示隐藏 

v-if  底层原理:根据判断条件控制元素的创建和移除(条件渲染)

image.png

image.png

5.v-else v-else-if

  1. 作用: 辅助 v-if 进行判断渲染

  2. 语法: v-else v-else-if = "表达式"

  3. 注意: 需要紧挨着 v-if 一起使用

 

<div id="app">
    <p v-if="gender === 1">性别:♂ 男</p>
    <p v-else>性别:♀ 女</p>
    <hr>
    <p v-if="score >= 90">成绩评定A:奖励电脑一台</p>
    <p v-else-if="score >= 70">成绩评定B:奖励周末郊游</p>
    <p v-else-if="score >= 60">成绩评定C:奖励零食礼包</p>
    <p v-else>成绩评定D:惩罚一周不能玩手机</p>
  </div>
  
  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>

    const app = new Vue({
      el: '#app',
      data: {
        gender: 2,
        score: 95
      }
    })
  </script>

6.v-on

  1. 作用:注册事件 = 添加监听 + 提供处理逻辑

  2. 语法:

    ① v-on:事件名 = "内联语句"

    ② v-on:事件名 = "methods中的函数名"

  3. 简写: @事件名

  4. 注意: methods函数内的 this 指向 Vue 实例

<body>
    <div id="app">
        <button @click="fn">切换显示隐藏</button>
        <h1 v-show = "isshow">Hello小唐</h1>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                isshow: true
            },
            methods: {
                fn () {
                    // 让提供的所有methods中的函数,this都指向当前实例
                    // console.log('执行了fn',app.isshow)
                    // app.isshow = !app.isshow
                    this.isshow = !this.isshow
                }
            }
        })
    </script>
</body>