Vue的常用指令

一、什么是指令

vue指令就是在vue中使用v-前缀特殊属性,指令就是用来扩展在vue中标签的功能,在模板中添加响应的行为,它本质上还是标签的属性

语法:v-指令=“指令值” ,一般写在开标签中

二、指令有那些

  1. v-if,v-else,v-else if:根据表达式的值,条件式的渲染Dom元素,v-if的条件为真时显示元素,条件为假时显示v-else的元素,三者一起使用的时候要注意顺序,先使用v-if,然后使用v-else-if,最后使用v-else,在执行时,先判断v-if的条件是否为真,条件为真显示v-if绑定的元素,条件为假判断v-else-if的条件是否为真,条件为真显示v-else-if绑定的元素,如果v-if和v-else-if的条件都不满足,最后会执行v-else绑定的元素

下面通过一个小案例来体会该指令实现的效果:

<template>
    <div>
        <h1>if的使用</h1>
        <hr>
        <div v-if="bool">我是哈哈哈</div>
        <div v-else>我是嘻嘻嘻</div>
        <button @click="fun()">点我修改值</button>
    </div>
</template> 
export default{
    components: {
        
    },
    data() {  
        return {
            bool:true,  //初始值为真
        }
    },
    methods: {
       fun(){
            this.bool=false  //点击后修改初始值为假
       }
    }
}

效果展示:
在这里插入图片描述

在点击按钮后触发函数,修改初始值,初始化的值发生了改变,显示“我是嘻嘻嘻”,“我是哈哈哈”为`true`时显示,“我是嘻嘻嘻”为false时显示

在这里插入图片描述

  • v-if和v-else-if,v-else三者一起使用
<template>
  <div>
    <select v-model="selectval">
      <option value="篮球">篮球</option>
      <option value="唱歌">唱歌</option>
      <option value="Rap">Rap</option>
      <option value="跳"></option>
    </select>

    <h1 v-if="selectval == '篮球'">篮球</h1>
    <h1 v-else-if="selectval == '唱歌'">唱歌</h1>
    <h1 v-else-if="selectval == 'Rap'">Rap</h1>
    <h1 v-else-if="selectval == '跳'"></h1>
    <h1 v-else>什么都没有选</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectval: "",
    };
  },
};
</script>

<style></style>

效果展示:
在这里插入图片描述
可以看到在页面刚刚加载好的时候显示什么都没有选,说明v-if和v-else-if的条件都没有满足,最后显示v-else绑定的元素
在这里插入图片描述
在下拉菜单选择“篮球”的选项后,v-if的条件满足,会显示“篮球”的h1元素

在这里插入图片描述
在这里插入图片描述

在下拉菜单选择“唱歌”,“跳”,“Rap”的选项后,v-else-if的条件满足,会显示“唱歌”,“跳”,“Rap”的h1元素

  1. v-show:根据表达式的值切换元素的显示和隐藏,使用CSS的方式来完成元素的显示和隐藏,true就是显示,false就是隐藏

下面通过一个小案例来体会该指令实现的效果:

<template>
  <div>
        <h1>v-show的使用</h1>
        <div v-show="bool">张无忌</div>
        <div v-show="booltwo">金毛狮王</div>
        <button @click="fun()">点我显示和隐藏</button>
  </div>
</template>

<script>
export default {
    data(){
        return {
            bool:true,
            booltwo:false
        }
    },
    methods: {
        fun(){
            this.bool=false,
            this.booltwo=true
            
        }
    }
}
</script>

<style>

</style>

效果展示:
在这里插入图片描述
在点击按钮后,触发函数,修改初始值
在这里插入图片描述
可以看到使用的是CSS的方式去控制元素的显示和隐藏

  1. v-for:根据原数据遍历渲染元素

下面通过一个小案例来体会该指令实现的效果:

<template>
  <div class="flexBox">
    <div id="demoBox" v-for="(v, i) in arr" :key="i" >  //key为唯一标识符
      <img :src="v.imgurl" />
      <h1>{{ v.title }}</h1>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      arr: [
        {
          title: "美食",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/4579713360f6b07c482d475606dcdaf32232.png",
        },
        {
          title: "猫眼电影",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/36ea5f8aa1429104ef51c9e03fe212a54183.png",
        },
        {
          title: "酒店",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/ea0c6fab93f5070dfc7baa50ac9052a02300.png",
        },
        {
          title: "休闲娱乐",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/7b30434d02d20c4e0428cbc2091499f22631.png",
        },
        {
          title: "外卖",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/f8fc99f79983d96a12889d00ad4df41a2868.png",
        },
        {
          title: "KTV",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/982e9a55410baae204a220840b11cc952772.png",
        },
        {
          title: "周边游",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/586d25e7f9615a91b831713c5b68fdd62345.png",
        },
        {
          title: "丽人",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/862a8ecbcaec80cc827090074c358f882565.png",
        },
        {
          title: "母婴亲子",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/51b317553ac233d10e00e22c3b198aac2906.png",
        },
        {
          title: "全部分类",
          imgurl:
            "https://p0.meituan.net/imeituanbusiness/ad793f3d4b6625b60a9aeb64688739952061.png",
        },
      ],
    };
  },
};
</script>

<style scoped>
.flexBox{
    height: 150px;
    display: flex;
    border: 1px solid #eee;
    justify-content: space-around;
    background-color: #fff;
}

#demoBox>img{
    display: block;
    margin: 1px auto;
}   

#demoBox>h1{
    text-align: center;
}
</style>

效果展示:
在这里插入图片描述
可以看到写在data中的数据已经渲染到页面上了,通过v-for可以快速实现批量渲染,在使用时要注意加上key唯一标识符

  1. v-bind:给html属性添加变量
  • v-bind有两种写法
    (1)传统写法:
    v-bind:属性=“属性值”
    (2)简写写法:
    直接使用“:”来代替v-bind,即 :属性=“属性值”

下面通过一个小案例来体会该指令实现的效果:

<template>
  <div>
    <h1>v-bind的使用</h1>
    <!-- 传统写法 -->
    <a v-bind:href="url">{{ text }}</a>
    <hr>
    <!-- 简写写法 -->
    <a :href="url">{{ text }}</a>
  </div>
</template>

<script>
export default {
    data(){
        return {
            text:"点击前往百度",
            url:"http://www.baidu.com/"
        }
    }
}
</script>

<style>

</style>

效果展示:
在这里插入图片描述
在点击后可以跳转到url变量的写好的地址,这个指令可以给属性插入变量

  1. v-on:设置Dom事件的绑定,在触发时执行一些
  • v-on有两种写法:
    (1)传统写法:
    v-on:事件名=“事件触发函数”
    (2)简写写法:
    直接使用@来代替v-on,既 @事件名=“事件触发函数”
  • 事件处理方式有两种:
    (1)调用函数处理方式
    这种方式要把函数写在methods中,在事件触发时调用写好的函数,在指令中可以不用加()去调用
    (2)内联事件方式
    这种方式要把函数写在methods中,在事件触发时调用写好的函数,在指令中必须加()去调用,在调用的同时可以传入参数

下面通过一个小案例来体会该指令实现的效果:

<template>
  <div>
    <h1>v-on的使用</h1>
    <button v-on:click="fun">点击在控制台打印数据</button>
    <button @click="func">点击在控制台打印数据</button>
    <!--传入事件对象-->
    <button @click="fund($event)">点击在控制台打印数据</button>

  </div>
</template>

<script>
export default {
    data(){
      return {
          text1:"张楚岚",
          text2:"王也"
      }
    },
    methods: {
      fun(){
          console.log(this.text1);
      },
      func(){
          console.log(this.text2);
      },
      fund(e){
          console.log(e); //打印事件对象
      }
    }
}
</script>

<style>

</style>

效果展示:
在这里插入图片描述

  1. v-model:就是在表单元素中进行数据双向绑定,可以用于不同的表单元素,自动监听输入事件

下面通过一个小案例来体会该指令实现的效果:

<template>
  <div>
    <h1>v-model的使用</h1>
    <input type="text" v-model="inputVal">
    <h1>{{ inputVal }}</h1>
  </div>
</template>

<script>
export default {
    data(){
        return {
            inputVal:""
        }
    }
}
</script>

<style>

</style>

效果如下:
在这里插入图片描述

总结了一些常用的指令,后面会继续补充内容!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值