vue-指令(菜鸟教程)

指令

表达式的值除了可以出现内容中,也可以使用在其它位置,比如:属性。但是不能使用 {{}} 语法,而是需要 指令

vue 中,指令是一个带有 v- 前缀的属性,与普通属性不一样的地方在于,指令的值是引号括起来的 表达式,不同的指令有不同的作用,vue 内置了一些常用的指令

指令新手指引:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
    <style>
        /* 编译结束时,失效  */
        /* [v-cloak]{
            font-size: 22px;
            color: tomato;
        } */
        
        
    </style>
</head>
<body>
    <!-- 
        指令:内容输出(text),循环,逻辑属性绑定,事件
        指定都得带v-在家指令名称 = 表达式(而不是普通的表达式)
     -->
    <div id="app">
        <!-- 表达式 -->
        <!-- {{x}} -->
        <h1>Hello,{{title}}</h1>
        <!-- 内容输出 -->
        <h1 v-text="title"></h1>
        <!--重点: 普通HTML插入-不会作为Vue模板进行编译 -->
        <p v-html  = "content"></p>
        <!-- cloak 优点:不需要表达式  它里面对应的是css样式-->
        <p v-cloak>{{content}}</p> 
    </div>
</body>
</html>
<script>
   let app= new Vue({
        el:"#app",
        data:{
            myclass:"dd", 
            x:1,
            y:2,
            title:"EGM",
            content:"<style>body{background:red}</style>",
        }
    });
</script>

v-show / v-if 如何使用?


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <!-- <div v-show={{islogin}}>这是一个屁</div> -->
        <div v-show = "islogin">这是一个屁/<div>
        <hr/>
        <!-- 假设登陆成功 -->
        <!-- 注意事项:v-if和v-else以及v-else-if 之间必须是连接的 中间不能出现其他元素 -->
        <div v-if="islogin">欢迎</div>
        <div v-else>请登录</div>
    </div>
</body>
</html>
<script>
    /*
        v-show:改变的只有该元素的display样式
               适用于: 数据的改变比较频繁
        v-if:改变该元素的结构(渲染或者删除)
            适用于:逻辑?
    */ 
    let app =new Vue({
        // el:document.quertSelector("div");
        el:"#app",
        data:{
            islogin:true
        }
    })
</script>

指令中的循环:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <!-- 指令中的循环
        v-for  和in 在这里使用没有任何去区别;
    -->
    <div id="app">
        <ul>
            <!-- users  指令,目标 -->
            <!-- v-for  小缺点: -->
            <li v-for ="user of users" :key ="user.id">
                <input type="checkbox">
                {{user.id}} {{user.name}}
            </li>
           
        </ul>
        <!-- 常用 -->
        <div v-for = "(val,name,index)in object">
            <span>索引值:{{index}}</span>
            <span> 属性名:{namel}},值:{{val}}</span>
        </div>
    </div>
</body>
</html>
<script>
    // 模板 => vdom => html
    // {
    //     li :"1"
    //     li :"2"
    //     li :"3"
    // }
    let app = new Vue({
        el:"#app",
        data:{
            // 数据
            users:[
                {id:1,name:"猪八戒"},
                {id:2,name:"猪戒"},
                {id:3,name:"八戒"},
                {id:4,name:"猪猪"},
            ],
            object:{
                x:"a",
                y:"b",
                z:"c"
            }
        }

    });
    


	
    /*
    v-指令名称:参数= "指令的值"
    简写: 
        => v-bind
    
    */
    let app = new Vue({
        el:"#app",
        data:{
            myclass:"box",
            Id:"gaga"
        }
    });
</script>

数组及对象写法(代码演示):


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <!-- v-bind -->
        <div :style="style1"></div>
        <!-- 数组写法
            :style 获取的是具体的样式
            :class 获取的是类名
        -->
        <div :style="[style1,style2]"></div>
        <!-- 对象写法 -->
        <!-- <div :class="{'box1':new_box,'box2':two_box},"></div> -->
    </div>
</body>
</html>
<script>
   
    let app = new Vue({
        el:"#app",
        data:{
            style1:{
                width:'100px',
                hright:'200px',
                background:'red'
            },
            style2:{
                // width:'300px',
                // height:'100px',
                border:"1px solid green"
            },
            box:

        }
        
    });
</script>

单项数据流 / 双向数据流(代码演示):


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <input type="text" v-model="msg">
        <div>{{msg}}</div>
        <!-- 单项绑定 -->
        <div>{{msg2}}</div>
    </div>
</body>
</html>
<script>
    /*
        单项数据流
        v-bind: 单项数据绑定。 数据到视图
        v-model:双向数据绑定: 数据=> 视图
        不是所有的标签(组件)都支持 v-model
        // 默认:交互元素(input textarea,
        不是所有的属性都支持 v-model
        v-model  只能绑定一个制定好的属性
        input:value
        textarea:value
        select:selected

        非交互:div p img 等静态类标签(不需要统计信息的)
    
    */ 
    let app = new Vue({
        el:"#app",
        data:{
            msg:"123",
            msg2:"abc",
        }
    });
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值