Vue指令1

4 篇文章 0 订阅

Vue指令1

内容绑定,事件绑定

v-text

  • 设置标签的文本值(textContent):能解析文本

v-html

  • 设置标签的innerHTML:能解析html结构

v-on

  • 为元素绑定事件(可以用@)定义在methods:中
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
    <div id="app">
        <h1 v-text="message+'!'">555</h1>
        <p v-text="info+'!'">555</p>

        <!-- 只有插值表达式才能表达:555 -->
        <p>{{message+"!"}}555</p>
    </div>

    <!-- v-html -->
    <div id="app2">
        <p v-html="content"></p>
    </div>

    <!-- v-on(@) -->
    <div id="app3">
        <input type="button" value="v-on指令" v-on:click="doit">
        <input type="button" value="v-on简写" @click="doit">
        <input type="button" value="双击事件" @dblclick="doit">
        <p @click="changeFood">{{ food }}</p>
    </div>
</body>
<script>
    var app=new Vue({
        el:"#app",
        data:{
            message:"Zany",
            info:"666"
        }
    });

    var app2=new Vue({
        el:"#app2",
        data:{
            content:"<a href='http://www.baidu.com'>百度</a>",
        }
    })

    var app3=new Vue({
        el:"#app3",
        methods:{
            doit:function(){
                alert("要开心");
            },
            changeFood:function(){
               this.food+="!!!";
            }
        },
        data:{
            food:"少吃饭"
        }
    })
</script>
</html>

实例:计数器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>计数器</title>
    <!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <button @click="sub">-</button>
        <span>{{ num }}</span>
        <button @click="add">+</button>
    </div>
</body>
<script>
    var app=new Vue({
        el:"#app",
        data:{
            num:0
        },
        methods:{
            add:function(){
                if(this.num!=100){
                    this.num+=1
                }
                else{
                    alert("不能大于100")
                }
            },
            sub:function(){
                if(this.num!=0){
                    this.num-=1
                }
                else{
                    alert("不能小于0")
                }
            }
        }
    })
</script>
</html>

在这里插入图片描述

v-show

  • 根据表达式的真假,切换元素的显示和隐藏

v-if

  • 根据表达式的真假,切换元素的显示状态(操纵Dom元素,频繁切换不建议使用v-if)

v-bind:(简写只保留

  • 为元素绑定属性
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue指令2</title>
    <style>
        .active{
            border: 1px solid red;
        }
    </style>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
    <div id="app">
        <!-- F12观察两者区别,v-if操作Dom元素,频繁切换不建议使用 -->
        <button @Click="ChangeIsShow">show切换:显示/隐藏</button>
        <button @Click="ChangeIsShow_if">if切换:显示/隐藏</button>
        <img v-show="IsShow" src="./image/sun.jpg" alt="sun">
        <img v-if="IsShow_if" src="./image/sun.jpg" alt="sun">
    </div>
    <!-- v-bind -->
    <div id="app2">
        <img v-bind:src="imgSrc" alt="">
        <img :src="imgSrc" alt="" :title="imgTitle+'icon'" 
        :class="isActive?'active':''" @click="toggleActive">

        <!-- {active:isActive}为设置对象的写法,较为常用 -->
        <img :src="imgSrc" alt="" :title="imgTitle+'icon'" 
        :class="{active:isActive}" @click="toggleActive">
    </div>
    <script>
        var app=new Vue({
            el:"#app",
            data:{
                IsShow:false,
                IsShow_if:false,
            },
            methods:{
                ChangeIsShow:function(){
                    this.IsShow=!this.IsShow;
                },
                ChangeIsShow_if:function(){
                    this.IsShow_if=!this.IsShow_if;
                },
            }
        })

        // v-bind
        var app2=new Vue({
            el:"#app2",
            data:{
                imgSrc:"./image/sunicon.jpg",
                imgTitle:"sun",
                isActive:true,
            },
            methods:{
                toggleActive:function(){
                    this.isActive= !this.isActive;
                },
            }
        })
    </script>
</body>
</html>

实例:图片切换

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<body>
    <div id="app">
        <a href="#" @click="prev" v-show="index!=0">上一张</a>
        <img :src="imgArr[index]">
        <a href="#" @click="next" v-show="index<imgArr.length-1">下一张</a>
    </div>
</body>
<script>
    var app=new Vue({
        el:"#app",
        data:{
            imgArr:["./image/changeimg_sun1.png","./image/changeimg_sun2.png","./image/changeimg_sun3.png"],
            index:0,
        },
        methods:{
            prev:function(){
                this.index--
            },
            next:function(){
                this.index++
            },
        }
    })
</script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值