Vue常用指令+用法举例 详解

vue的常用指令有:vue常用指令有:v-on指令、v-model指令、v-once指令、v-show指令、v-if指令、v-else指令、v-else-if指令、v-for指令、v-text指令、v-html指令、v-bind指令等等。

1.v-on

v-on 事件绑定指令,用来辅助程序员为DOM 元素绑定事件监听

语法: v-on:<事件类型>="<函数名>"由于v-on 指令在开发中使用频率非常高,因此,vue 官方为其提供了简写形式(简写为英文的@)

复制代码
<body>
    <div id="app">
        <!-- 完整写法 v-on: -->
        <div v-on:click="clickfunc">点击事件</div>
        <!-- 缩写 @ -->
        <div @click="clickfunc">点击事件</div>
    </div>
</body>
<script>
    new Vue({
        el:"#app",
        data:{
        },
        methods:{
         // 定义一个 点击函数   
            clickfunc:function(){
                console.dir('click event')
            }    
        },
    })
</script>

2.v-model

vue中双向绑定是一个指令v-model,可以绑定一个动态值到视图,同时视图中变化能改变该值。v-model是语法糖,默认情况下相于:value和@input。

使用v-model可以减少大量繁琐的事件处理代码,提高开发效率,代码可读性也更好

通常在表单项上使用v-model

原生的表单项可以直接使用v-model,自定义组件上如果要使用它需要在组件内绑定value并处理输入事件。语法: v-model="<变量名>"

复制代码
<body>
    <div id="app">
        <div>val的值:{{val}}</div>
        <div>val的值:{{val}}</div>
        <input v-model="val">
    </div>
</body>
<script>
    new Vue({
        el:"#app",
        data:{
            val:'success'
        }
    })
</script>

3.v-once

v-once只会执行一次渲染,当数据发生改变时,不会再变化

复制代码
<div id="app">
    <p v-once>{{msg}}</p>
    <input v-model="msg" type="text" />
</div>
<script>
    let vue = new Vue({
        el:"#app",
        data:{
            msg:'今天气温'
        }
    })
</script>

4.v-show

v-show接受一个表达式或一个布尔值。相当于给元素添加一个display属性

复制代码
<div id="app">
    <div v-show="conditional ==  'ok' ">{{msg}}</div>
    <input v-model="msg" type="text" />
</div>
<script>
    let vue = new Vue({
        el:"#app",
        data:{
            msg:'今天气温',
            conditional:'ok'
        }
    })
</script>

5.v-if、v-else、v-else-if

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true 值的时候被渲染。

v-if和v-show有同样的效果,不同在于v-if是重新渲染,而v-show使用display属性来控制显示隐藏。频繁切换的话使用v-show减少渲染带来的开销。

说明一下:v-if可以单独使用,v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别

v-if、v-else-if都是接受一个条件或布尔值,v-else不需要参数。比较简单,看看案例:
复制代码
<div id="app">
   	<div>
       小明评级为:<span v-if="score >= 90">优秀</span>
       <span v-else-if="score >= 80">良好</span>
       <span v-else-if="score >= 60">及格</span>
       <span v-else>不及格</span>
    </div>
</div>
<script>
     new Vue({
        el:"#app",
        data:{
            msg:'message',
            score:59,  
        },
    })
</script>

6.v-for

v-for可用来遍历数组、对象、字符串。

复制代码
<div id="app">
    <!-- obj -->
    <div v-for="(att,val) in obj">
        {{att}}:{{val}}
    </div>
    <!-- arr -->
    <div v-for="(val, index) in arr">
        {{index}}:{{val}}
    </div>
    <!-- string -->
    <div v-for="astr in str">
        {{astr}}
    </div>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            obj:{
                name:'kk',
                age:'18',
                hobby:'pingpong'
            },
            arr:[
                1,2,3,4,4,5,6,7
            ],
            str:'str hello world'
        },
    })
</script>

7.v-text和v-html

v-text是渲染字符串,会覆盖原先的字符串

v-html是渲染为html。{``{}}双大括号和v-text都是输出为文本。那如果想输出为html。使用v-html,如下例子

复制代码
<div id="app">
    <div>{{innerHtml}}</div>
    <div v-text="innerHtml"></div>
    <div v-html="innerHtml"></div>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            innerHtml:'<button>一个按钮</button>'
        }
    })
</script>

8.v-bind

可以将标签内的属性值解析成js代码,在标签的属性中使用v-bind,双引号里的内容会被当作js解析(只能解析变量或三元表达式),如下:

如果给属性值设置为一个变量,那么可以使用v-bind

可以缩写为**:<属性>="<变量>"**

复制代码
 <div id="app">
     <!-- 完整写法 v-bind: -->
     <div v-bind:class="className">"{{innerHtml}}"</div>
     <!-- 缩写 : -->
     <div :class="className">"{{innerHtml}}"</div>
     <div v-text="innerHtml"></div>
     <div v-html="innerHtml"></div>
</div>
<script>
    new Vue({
        el:"#app",
        data:{
            innerHtml:'<button>一个按钮</button>',
            className:'box'
        }
    })
</script>
相关推荐
崔庆才丨静觅4 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60615 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了5 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅5 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅5 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅6 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment6 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅6 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊6 小时前
jwt介绍
前端
爱敲代码的小鱼6 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax