Vue常用指令使用与演示

1 篇文章 0 订阅

渲染数据

v-html

更新元素的innerHTML内容,传入的参数可以包含html标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-html="msg1"></div>
        <div v-html="msg2"></div>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg1:"这是msg1",
                msg2:`<h1>这是msg2</h1>`
            }
        })
    </script>
</body>

</html>

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

v-text

更新元素的 textContent内容,参数如果包含html标签不会被解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-text="msg1"></div>
        <div v-text="msg2"></div>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg1:"这是msg1",
                msg2:`<h1>这是msg2</h1>`
            }
        })
    </script>
</body>

</html>

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

v-show

根据传入参数值的真假(true/false),切换元素的display,让其显示或隐藏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-text="msg1" v-show="show"></div>
        
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg1:"这是msg1",
                show:true
            }
        })
    </script>
</body>

</html>

效果图:

false:元素的样式为display:none
在这里插入图片描述
true:元素正常显示
在这里插入图片描述

v-if

根据参数的或者表达式的真/假(true/false),决定是否渲染该元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">v
        <div v-text="msg1" v-if="show"></div>
        
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg1:"Vue v-if",
                show:true
            }
        })
    </script>
</body>

</html>

效果图:

参数结果为true时,渲染该元素
在这里插入图片描述
参数结果为false时,不加载渲染该元素
在这里插入图片描述

v-else

不需要传入参数或者表达式,前一个兄弟元素必须有v-if或者v-else-if(使用方法同v-if)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
        <div v-text="msg1" v-if="show"></div>
        <div v-text="msg2" v-else></div>
        
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg1:"msg1",
                msg2:"msg2",
                show:false
            }
        })
    </script>
</body>

</html>

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

v-for

遍历源数据并多次渲染所在元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="item in users">{{item}}</li>
        </ul>
        
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                users:["user1","user2","user3"]
            }
        })
    </script>
</body>

</html>

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

v-once

只在页面加载时渲染元素一次,随后即便渲染的源数据改变,该元素也不重新渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
        <p>{{num}}</p>
        once:
        <span v-once>{{num}}</span>
        <button @click="Add"> +1</button>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                num:0
            },
            methods: {
                Add(){
                    this.num++
                }
            },
        })
    </script>
</body>

</html>

效果图:

在这里插入图片描述

v-cloak

数据加载较慢时,插值表达式还未获取到值,会以原始的状态显示,v-cloak指令配合css样式可以令其先隐藏,等到渲染完成后再显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<style>
    [v-cloak]{
        display: none;
    }
</style>
<body>
    <div id="app">
            <p v-cloak>{{msg}}</p>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg:"v-cloak"
            },
        })
    </script>
</body>

</html>

效果图:

加载中
在这里插入图片描述
加载完成
在这里插入图片描述

v-pre

跳过这个元素和它的子元素的编译过程。可以用来显示原始内容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
            <p v-pre>{{msg}}</p>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg:"v-pre"
            }
        })
    </script>
</body>

</html>

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

属性绑定

v-bind

动态地绑定一个或多个属性,可以简写为 “:”(英文冒号)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
        <img v-bind:src="imageSrc">
        <img :src="imageSrc" alt="">
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                imageSrc:"https://tse4-mm.cn.bing.net/th/id/OIP.wVTMCxNUrobrTPCygDWdDQHaEg?w=284&h=180&c=7&o=5&pid=1.7"
            },
            
        })
    </script>
</body>

</html>

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

绑定事件

v-on

绑定事件的监听器,可以简写为“ @ ”。事件类型由参数指定。表达式可以是一个方法的名字或一个内联语句,如果没有修饰符也可以省略。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>
<body>
    <div id="app">
        <span>{{num}}</span>
        <p>@</p>
        <button @click="add">+1</button>
        <p>v-on</p>
        <button v-on:click="add">+1</button>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                num:0
            },
            methods: {
                add(){
                    this.num++
                }
            },
        })
    </script>
</body>

</html>

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

数据绑定

v-model

在表单控件或者组件上创建双向绑定,随表单控件类型不同而不同。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Vue_test</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
</head>

<body>
    <div id="app">
        <p>
            <input type="text" v-model="msg">
            text:{{msg}}
        </p>
        <p>
            <input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
            <label for="jack">Jack</label>
            <input type="checkbox" id="john" value="John" v-model="checkedNames">
            <label for="john">John</label>
            <input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
            <label for="mike">Mike</label>
            <br>
            <span>Checked names: {{ checkedNames }}</span>
        </p>
        <p>
            <input type="radio" id="one" value="One" v-model="picked">
            <label for="one">One</label>
            <br>
            <input type="radio" id="two" value="Two" v-model="picked">
            <label for="two">Two</label>
            <br>
            <span>Picked: {{ picked }}</span>
        </p>
        <p>
            <select v-model="selects">
                <option value="a">a</option>
                <option value="b">b</option>
                <option value="c">c</option>
            </select>
            pick:{{selects}}
        </p>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                msg: "",
                checkedNames: [],
                selects: "",
                picked:""
            },

        })
    </script>
</body>

</html>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值