zoukankan      html  css  js  c++  java
  • Vue指令

    ------------恢复内容开始------------

    1. 文本指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>文本指令</title>
    </head>
    <body>
        <div id="app">
            <!-- 1、插值表达式,能完成变量渲染,变量基础运算,变量方法调用,不能完成复杂运算(一步解决不了的,不能出现;) -->
            <p>{{ msg }}</p>
            <p>{{ msg + '拼接内容' }}</p>
            <p>{{ msg[1] }}</p>
            <p>{{ msg.slice(2, 4) }}</p>
    
            <hr>
    
            <!--2、v-text:将所有内容做文本渲染 -->
            <p v-text="msg + '拼接内容'"></p>
    
            <!--3、v-html:可以解析html语法标签的文本 -->
            <p v-text="'<b>' + msg + '</b>'"></p>
            <p v-html="'<b>' + msg + '</b>'"></p>
    
    
            <p v-text="`<b>${msg}</b>`"></p>
            <p v-html="`<b>${msg}</b>`"></p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '文本信息'
            }
        })
    </script>
    </html>
    

    2. 事件指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>事件指令</title>
        <style>
            .box {
                 200px;
                height: 200px;
                background-color: yellowgreen;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <!--事件指令:v-on:事件名="事件函数"  -->
            <!--简写:@事件名="事件函数"  -->
            <p v-on:click="f1">被点击了{{ count }}下</p>
            <hr>
            <p @click="f2">{{ p2 }}</p>
            <hr>
            <!--绑定的事件函数可以添加(),添加括号就代表要传递参数-->
            <ul>
                <li @click="f3(100)">{{ arr[0] }}</li>
                <li @click="f3(200)">{{ arr[1] }}</li>
                <li @click="f3(300)">{{ arr[2] }}</li>
            </ul>
            <ul>
                <li @click="f4(0)">{{ arr[0] }}</li>
                <li @click="f4(1)">{{ arr[1] }}</li>
                <li @click="f4(2)">{{ arr[2] }}</li>
            </ul>
            <hr>
            <!--绑定的事件函数如果没有传递参数,默认传入 事件对象 -->
            <div class="box" @click="f5"></div>
            <hr>
            <!--事件函数一旦添加传参(),系统就不再传递任何参数,需要事件对象时,可以手动传入 $event -->
            <div class="box" @click="f6(10, $event)"></div>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                count: 0,
                p2: '第二个p',
                arr: [1, 2, 3],
            },
            methods: {
                f1() {
                    this.count ++
                },
                f2() {
                    console.log(this.p2)
                },
                f3(num) {
                    console.log(num);
                },
                f4(index) {
                    console.log(this.arr[index]);
                },
                f5(ev, b) {
                    console.log(ev);
                    console.log(b);
                },
                f6(num, ev) {
                    console.log(num);
                    console.log(ev);
                }
            },
        })
    
    </script>
    </html>
    

    3. 属性指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>属性指令</title>
        <style>
            .b1 {
                 100px;
                height: 100px;
                background-color: red;
            }
    
            .box1 {
                 150px;
                height: 150px;
                background-color: darkturquoise;
                transition: .3s;
            }
            .box2 {
                 300px;
                height: 100px;
                background-color: darkgoldenrod;
                transition: .3s;
            }
    
            .circle {
                border-radius: 50%;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <!--1.下方的class、id、title、abc等是div标签的属性,属性指令就是控制它们的-->
            <div class="b1" id="b1" v-bind:title="title" :abc="xyz"></div>
            <!--2.属性指令:v-bind:属性名="变量",简写方式 :属性名="变量" -->
    
            <!--3.属性指令操作 style 属性-->
            <div style=" 200px;height: 200px;background-color: greenyellow"></div>
            <!-- 通常:变量值为字典 -->
            <div :style="mys1"></div>
            <!-- 了解:{中可以用多个变量控制多个属性细节} -->
            <div :style="{ w,height: '200px',backgroundColor: 'deeppink'}"></div>
    
    
            <!--重点:一般vue都是结合原生css来完成样式控制 -->
            <!--<div :class="c1"></div>-->
    
            <!--class可以写两份,一份写死,一份有vue控制-->
            <div class="box1" :class="c2"></div>
    
            <!--{}控制类名,key为类名,key对应的值为bool类型,决定该类名是否起作用-->
            <div :class="{box2:true, circle:cable}" @mouseover="changeCable(1)" @mouseout="changeCable(0)"></div>
    
    
            <!--[]控制多个类名-->
            <div :class="[c3, c4]"></div>
        </div>
    
        <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    </body>
    <script src="js/vue.js"></script>
    <script>
        let app = new Vue({
            el: '#app',
            data: {
                title: '12345',
                xyz: 'opq',
                mys1: {
                     '200px',
                    height: '200px',
                    // 'background-color': 'greenyellow'
                    backgroundColor: 'pink',
                },
                w: '200px',
                c1: 'box1',
                c2: 'circle',
                cable: false,
                c3: 'box1',
                c4: 'circle'
            },
            methods: {
                changeCable(n) {
                    this.cable = n;
                }
            }
        });
    
        setInterval(function () {
            // app.c1 = app.c1 === 'box1' ? 'box2' : 'box1';
            if (app.c1 === 'box1') {
                app.c1 = 'box2';
            } else {
                app.c1 = 'box1';
            }
        }, 300)
    
    
    </script>
    </html>
    

    4. 表单指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>表单指令</title>
    </head>
    <body>
        <div id="app">
            <form action="">
                <!--属性指令:v-model="变量",v-model绑定的变量控制的是表单元素的value值 -->
    
                <!--普通表单元素,用v-model直接绑定变量控制value值-->
                <input type="text" v-model="v1">
                <input type="text" v-model="v1">
                <textarea name="" id="" cols="30" rows="10" v-model="v1"></textarea>
                <p>{{ v1 }}</p>
                <hr>
    
                <!--单一复选框-->
                同意:
                <input type="checkbox" name="agree" v-model="v2">
                <hr>
                <!--多个复选框-->
                男:<input type="checkbox" name="hobbies" value="male" v-model="v3">
                女:<input type="checkbox" name="hobbies" value="female" v-model="v3">
                哇塞:<input type="checkbox" name="hobbies" value="wow" v-model="v3">
                <p>{{ v3 }}</p>
                <hr>
    
                <!--单选框-->
                中午吃啥:<br>
                肉肉:<input  name="food" type="radio" value="rourou" v-model="v4">
                饭饭:<input name="food" type="radio" value="fanfan" v-model="v4">
                <p>{{ v4 }}</p>
                <hr>
                <button type="submit">提交</button>
            </form>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                v1: '',
                v2: false,  // false
                v3: ['male', 'wow'],
                v4: 'rourou',
            }
        })
    </script>
    </html>
    

    5. 斗篷指令

    为了解决缓存闪烁

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>斗篷指令</title>
        <style>
            [v-cloak] {
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="app" v-cloak>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: 12345
            }
        })
    </script>
    </html>
    

    6.1 条件指令(一)

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            <!--条件指令:
                v-if="true|false",为假时,在页面上不渲染,可以隐藏标签中的信息
                v-show="true|false",为假时,在页面中用display:none渲染,虽然没展示,但是任在页面结构中
            -->
            <p v-if="false">if指令</p>
            <p v-show="false">show指令</p>
    
            <!-- v-if是一个家族
            v-if
            v-else-if
            v-else
            1、上分支成立,下分支会被屏蔽
            2、else分支只要在所有上分支都为假时显示,且不需要条件
            -->
            <p v-if="v1 === '1'">if分支</p>
            <p v-else-if="v1 === '2'">elif分支1</p>
            <p v-else-if="v1 === '3'">elif分支2</p>
            <p v-else>else分支</p>
            <hr>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                v1: '2'
            }
        })
    </script>
    </html>
    

    6.2 条件指令(二)案例

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>条件指令案例</title>
        <style>
            .box {
                 400px;
                height: 200px;
            }
            .r { background-color: red }
            .y { background-color: yellow }
            .g { background-color: green }
    
            .action {
                background-color: pink;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <p>
                <button @click="changeC('red')" :class="{action: c === 'red'}">红</button>
                <!--<button @click="changeC('red')" :class="c === 'red'? 'action': ''">红</button>-->
                <button @click="changeC('yellow')" :class="{action: c === 'yellow'}">黄</button>
                <button @click="changeC('green')" :class="{action: c === 'green'}">绿</button>
            </p>
            <div class="wrap">
                <div class="box r" v-if="c === 'red'"></div>
                <div class="box y" v-else-if="c === 'yellow'"></div>
                <div class="box g" v-else></div>
            </div>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // sessionStorage的生命周期与页面标签绑定,当标签页被关闭,数据库被清空
        // localStorage是前台永久数据库
    
        // sessionStorage.name = '123';
        // localStorage.name = 'xyz';
        // localStorage.clear();
    
    
        new Vue({
            el: '#app',
            data: {
                // 页面重新刷新加载,可以从数据库中获取缓存,如果没有,再取默认值
                // c: 'red',
                c: localStorage.c ? localStorage.c : 'red',
            },
            methods: {
                changeC(color) {
                    this.c = color;
                    // 每一次改变c的值,将值同步到前台数据库
                    localStorage.c = color;  // 存
                }
            }
        })
    </script>
    </html>
    

    8.1循环指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            <!--循环指令:
                v-for=""
                语法:
                v-for="成员 in 容器"
            -->
            <!--1、字符串循环渲染: 可以只遍历值,也可以遍历值与索引-->
            <p>
                <span v-for="v in title">{{ v }}</span>
            </p>
    
            <p>
                <span v-for="(v, i) in title">
                    <span v-if="i != 0"> | </span>
                    {{ v }}
                </span>
            </p>
    
            <!--2、数组循环渲染: 可以只遍历值,也可以遍历值与索引-->
            <div>
                <p v-for="(v, i) in arr">第{{ i }}元素:{{ v }}</p>
            </div>
    
            <!--3、对象循环渲染: 可以只遍历值,也可以遍历值与键,还可以遍历值、键与索引-->
            <div>
                <p v-for="v in people">{{ v }}</p>
            </div>
            <div>
                <p v-for="(v, k) in people">{{ k }}:{{ v }}</p>
            </div>
            <div>
                <p v-for="(v, k, i) in people">{{ i }}-{{ k }}:{{ v }}</p>
            </div>
            <br>
    
            <div>
                <div v-for="(stu, i) in stus">
                    <hr v-if="i != 0">
                    <p v-for="(v, k) in stu">{{ k }}:{{ v }}</p>
                </div>
            </div>
    
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                title: '循环指令',
                arr: [1, 4, 2, 5, 3],
                people: {
                    name: '兔子',
                    color: '粉白',
                    price: 6.66,
                },
                stus: [
                    {
                        name: "Bob",
                        age: 18
                    },
                    {
                        name: "Tom",
                        age: 17
                    },
                    {
                        name: "Jerry",
                        age: 19
                    }
                ]
            }
        })
    </script>
    </html
    

    8.2 循环指令(案例)

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            <input type="text" v-model="msg">
            <button @click="send_comment">留言</button>
            <ul>
                <li v-for="(v, i) in comments" @click="deleteMsg(i)">{{ v }}</li>
            </ul>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '',
                comments: []
            },
            methods: {
                send_comment() {
                    // 数组的增
                    // push pop unshift shift splice
                    // this.comments.unshift(this.msg);
                    // this.comments.splice(0,0,0);
                    if (this.msg) {
                        this.comments.push(this.msg);  // 留言
                        this.msg = '';  // 留言后清空输入框
                    }
                },
                deleteMsg(index) {
                    this.comments.splice(index, 1);
                }
            }
        })
    </script>
    <script>
    
        // 数组操作万能方法,可以完成增删改
        let arr = [1, 2, 3];
        // 参数:开始索引,操作长度,操作的结果们
        arr.splice(2, 0, 100);
        arr.splice(1, 1);
        console.log(arr);
    
    </script>
    
    </html>
    

    ------------恢复内容结束------------

    1. 文本指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>文本指令</title>
    </head>
    <body>
        <div id="app">
            <!-- 1、插值表达式,能完成变量渲染,变量基础运算,变量方法调用,不能完成复杂运算(一步解决不了的,不能出现;) -->
            <p>{{ msg }}</p>
            <p>{{ msg + '拼接内容' }}</p>
            <p>{{ msg[1] }}</p>
            <p>{{ msg.slice(2, 4) }}</p>
    
            <hr>
    
            <!--2、v-text:将所有内容做文本渲染 -->
            <p v-text="msg + '拼接内容'"></p>
    
            <!--3、v-html:可以解析html语法标签的文本 -->
            <p v-text="'<b>' + msg + '</b>'"></p>
            <p v-html="'<b>' + msg + '</b>'"></p>
    
    
            <p v-text="`<b>${msg}</b>`"></p>
            <p v-html="`<b>${msg}</b>`"></p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '文本信息'
            }
        })
    </script>
    </html>
    

    2. 事件指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>事件指令</title>
        <style>
            .box {
                 200px;
                height: 200px;
                background-color: yellowgreen;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <!--事件指令:v-on:事件名="事件函数"  -->
            <!--简写:@事件名="事件函数"  -->
            <p v-on:click="f1">被点击了{{ count }}下</p>
            <hr>
            <p @click="f2">{{ p2 }}</p>
            <hr>
            <!--绑定的事件函数可以添加(),添加括号就代表要传递参数-->
            <ul>
                <li @click="f3(100)">{{ arr[0] }}</li>
                <li @click="f3(200)">{{ arr[1] }}</li>
                <li @click="f3(300)">{{ arr[2] }}</li>
            </ul>
            <ul>
                <li @click="f4(0)">{{ arr[0] }}</li>
                <li @click="f4(1)">{{ arr[1] }}</li>
                <li @click="f4(2)">{{ arr[2] }}</li>
            </ul>
            <hr>
            <!--绑定的事件函数如果没有传递参数,默认传入 事件对象 -->
            <div class="box" @click="f5"></div>
            <hr>
            <!--事件函数一旦添加传参(),系统就不再传递任何参数,需要事件对象时,可以手动传入 $event -->
            <div class="box" @click="f6(10, $event)"></div>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                count: 0,
                p2: '第二个p',
                arr: [1, 2, 3],
            },
            methods: {
                f1() {
                    this.count ++
                },
                f2() {
                    console.log(this.p2)
                },
                f3(num) {
                    console.log(num);
                },
                f4(index) {
                    console.log(this.arr[index]);
                },
                f5(ev, b) {
                    console.log(ev);
                    console.log(b);
                },
                f6(num, ev) {
                    console.log(num);
                    console.log(ev);
                }
            },
        })
    
    </script>
    </html>
    

    3. 属性指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>属性指令</title>
        <style>
            .b1 {
                 100px;
                height: 100px;
                background-color: red;
            }
    
            .box1 {
                 150px;
                height: 150px;
                background-color: darkturquoise;
                transition: .3s;
            }
            .box2 {
                 300px;
                height: 100px;
                background-color: darkgoldenrod;
                transition: .3s;
            }
    
            .circle {
                border-radius: 50%;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <!--1.下方的class、id、title、abc等是div标签的属性,属性指令就是控制它们的-->
            <div class="b1" id="b1" v-bind:title="title" :abc="xyz"></div>
            <!--2.属性指令:v-bind:属性名="变量",简写方式 :属性名="变量" -->
    
            <!--3.属性指令操作 style 属性-->
            <div style=" 200px;height: 200px;background-color: greenyellow"></div>
            <!-- 通常:变量值为字典 -->
            <div :style="mys1"></div>
            <!-- 了解:{中可以用多个变量控制多个属性细节} -->
            <div :style="{ w,height: '200px',backgroundColor: 'deeppink'}"></div>
    
    
            <!--重点:一般vue都是结合原生css来完成样式控制 -->
            <!--<div :class="c1"></div>-->
    
            <!--class可以写两份,一份写死,一份有vue控制-->
            <div class="box1" :class="c2"></div>
    
            <!--{}控制类名,key为类名,key对应的值为bool类型,决定该类名是否起作用-->
            <div :class="{box2:true, circle:cable}" @mouseover="changeCable(1)" @mouseout="changeCable(0)"></div>
    
    
            <!--[]控制多个类名-->
            <div :class="[c3, c4]"></div>
        </div>
    
        <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
    </body>
    <script src="js/vue.js"></script>
    <script>
        let app = new Vue({
            el: '#app',
            data: {
                title: '12345',
                xyz: 'opq',
                mys1: {
                     '200px',
                    height: '200px',
                    // 'background-color': 'greenyellow'
                    backgroundColor: 'pink',
                },
                w: '200px',
                c1: 'box1',
                c2: 'circle',
                cable: false,
                c3: 'box1',
                c4: 'circle'
            },
            methods: {
                changeCable(n) {
                    this.cable = n;
                }
            }
        });
    
        setInterval(function () {
            // app.c1 = app.c1 === 'box1' ? 'box2' : 'box1';
            if (app.c1 === 'box1') {
                app.c1 = 'box2';
            } else {
                app.c1 = 'box1';
            }
        }, 300)
    
    
    </script>
    </html>
    

    4. 表单指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>表单指令</title>
    </head>
    <body>
        <div id="app">
            <form action="">
                <!--属性指令:v-model="变量",v-model绑定的变量控制的是表单元素的value值 -->
    
                <!--普通表单元素,用v-model直接绑定变量控制value值-->
                <input type="text" v-model="v1">
                <input type="text" v-model="v1">
                <textarea name="" id="" cols="30" rows="10" v-model="v1"></textarea>
                <p>{{ v1 }}</p>
                <hr>
    
                <!--单一复选框-->
                同意:
                <input type="checkbox" name="agree" v-model="v2">
                <hr>
                <!--多个复选框-->
                男:<input type="checkbox" name="hobbies" value="male" v-model="v3">
                女:<input type="checkbox" name="hobbies" value="female" v-model="v3">
                哇塞:<input type="checkbox" name="hobbies" value="wow" v-model="v3">
                <p>{{ v3 }}</p>
                <hr>
    
                <!--单选框-->
                中午吃啥:<br>
                肉肉:<input  name="food" type="radio" value="rourou" v-model="v4">
                饭饭:<input name="food" type="radio" value="fanfan" v-model="v4">
                <p>{{ v4 }}</p>
                <hr>
                <button type="submit">提交</button>
            </form>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                v1: '',
                v2: false,  // false
                v3: ['male', 'wow'],
                v4: 'rourou',
            }
        })
    </script>
    </html>
    

    5. 斗篷指令

    为了解决缓存闪烁

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>斗篷指令</title>
        <style>
            [v-cloak] {
                display: none;
            }
        </style>
    </head>
    <body>
        <div id="app" v-cloak>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
            <p>{{ msg }}</p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: 12345
            }
        })
    </script>
    </html>
    

    6.1 条件指令(一)

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            <!--条件指令:
                v-if="true|false",为假时,在页面上不渲染,可以隐藏标签中的信息
                v-show="true|false",为假时,在页面中用display:none渲染,虽然没展示,但是任在页面结构中
            -->
            <p v-if="false">if指令</p>
            <p v-show="false">show指令</p>
    
            <!-- v-if是一个家族
            v-if
            v-else-if
            v-else
            1、上分支成立,下分支会被屏蔽
            2、else分支只要在所有上分支都为假时显示,且不需要条件
            -->
            <p v-if="v1 === '1'">if分支</p>
            <p v-else-if="v1 === '2'">elif分支1</p>
            <p v-else-if="v1 === '3'">elif分支2</p>
            <p v-else>else分支</p>
            <hr>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                v1: '2'
            }
        })
    </script>
    </html>
    

    6.2 条件指令(二)案例

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>条件指令案例</title>
        <style>
            .box {
                 400px;
                height: 200px;
            }
            .r { background-color: red }
            .y { background-color: yellow }
            .g { background-color: green }
    
            .action {
                background-color: pink;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <p>
                <button @click="changeC('red')" :class="{action: c === 'red'}">红</button>
                <!--<button @click="changeC('red')" :class="c === 'red'? 'action': ''">红</button>-->
                <button @click="changeC('yellow')" :class="{action: c === 'yellow'}">黄</button>
                <button @click="changeC('green')" :class="{action: c === 'green'}">绿</button>
            </p>
            <div class="wrap">
                <div class="box r" v-if="c === 'red'"></div>
                <div class="box y" v-else-if="c === 'yellow'"></div>
                <div class="box g" v-else></div>
            </div>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // sessionStorage的生命周期与页面标签绑定,当标签页被关闭,数据库被清空
        // localStorage是前台永久数据库
    
        // sessionStorage.name = '123';
        // localStorage.name = 'xyz';
        // localStorage.clear();
    
    
        new Vue({
            el: '#app',
            data: {
                // 页面重新刷新加载,可以从数据库中获取缓存,如果没有,再取默认值
                // c: 'red',
                c: localStorage.c ? localStorage.c : 'red',
            },
            methods: {
                changeC(color) {
                    this.c = color;
                    // 每一次改变c的值,将值同步到前台数据库
                    localStorage.c = color;  // 存
                }
            }
        })
    </script>
    </html>
    

    8.1循环指令

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            <!--循环指令:
                v-for=""
                语法:
                v-for="成员 in 容器"
            -->
            <!--1、字符串循环渲染: 可以只遍历值,也可以遍历值与索引-->
            <p>
                <span v-for="v in title">{{ v }}</span>
            </p>
    
            <p>
                <span v-for="(v, i) in title">
                    <span v-if="i != 0"> | </span>
                    {{ v }}
                </span>
            </p>
    
            <!--2、数组循环渲染: 可以只遍历值,也可以遍历值与索引-->
            <div>
                <p v-for="(v, i) in arr">第{{ i }}元素:{{ v }}</p>
            </div>
    
            <!--3、对象循环渲染: 可以只遍历值,也可以遍历值与键,还可以遍历值、键与索引-->
            <div>
                <p v-for="v in people">{{ v }}</p>
            </div>
            <div>
                <p v-for="(v, k) in people">{{ k }}:{{ v }}</p>
            </div>
            <div>
                <p v-for="(v, k, i) in people">{{ i }}-{{ k }}:{{ v }}</p>
            </div>
            <br>
    
            <div>
                <div v-for="(stu, i) in stus">
                    <hr v-if="i != 0">
                    <p v-for="(v, k) in stu">{{ k }}:{{ v }}</p>
                </div>
            </div>
    
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                title: '循环指令',
                arr: [1, 4, 2, 5, 3],
                people: {
                    name: '兔子',
                    color: '粉白',
                    price: 6.66,
                },
                stus: [
                    {
                        name: "Bob",
                        age: 18
                    },
                    {
                        name: "Tom",
                        age: 17
                    },
                    {
                        name: "Jerry",
                        age: 19
                    }
                ]
            }
        })
    </script>
    </html
    

    8.2 循环指令(案例)

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            <input type="text" v-model="msg">
            <button @click="send_comment">留言</button>
            <ul>
                <li v-for="(v, i) in comments" @click="deleteMsg(i)">{{ v }}</li>
            </ul>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '',
                comments: []
            },
            methods: {
                send_comment() {
                    // 数组的增
                    // push pop unshift shift splice
                    // this.comments.unshift(this.msg);
                    // this.comments.splice(0,0,0);
                    if (this.msg) {
                        this.comments.push(this.msg);  // 留言
                        this.msg = '';  // 留言后清空输入框
                    }
                },
                deleteMsg(index) {
                    this.comments.splice(index, 1);
                }
            }
        })
    </script>
    <script>
    
        // 数组操作万能方法,可以完成增删改
        let arr = [1, 2, 3];
        // 参数:开始索引,操作长度,操作的结果们
        arr.splice(2, 0, 100);
        arr.splice(1, 1);
        console.log(arr);
    
    </script>
    
    </html>
    
  • 相关阅读:
    python操作MySQL数据库
    用python监控您的window服务
    关于position定位中的几个注意点
    filter 滤镜
    git使用心得
    :after,:before,content
    outline和border
    《css揭秘》之背景与边框
    css权威指南学习笔记--第6章
    浅谈setTimeout和setInterval
  • 原文地址:https://www.cnblogs.com/zfb123-/p/11900328.html
Copyright © 2011-2022 走看看