zoukankan      html  css  js  c++  java
  • Vue学习之渲染

    一.计算命令computed

    ```html
    <body>
        <div id="app"><input type="text" v-model="first_name">
            <hr><input type="text" v-model="last_name">
            <hr>
            <p>{{ first_name + " " + last_name }}</p>
            <p>{{ full_name_fn() }}</p>
            <!-- 一个变量的值依赖于多个变量的值 -->
            <p>{{ full_name }}</p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: "#app",
            data: {
                first_name: "",
                last_name: "",
            },
            methods: {
                // 声明的是函数, 该函数必须手动调用
                full_name_fn: function () {
                    return this.first_name + " " + this.last_name
                }
            },
            computed: {
                // 声明变量full_name, 该变量的值等于后方函数的返回值
                // 函数中包含的所有vue变量值只要有发生变化的系统就会调用该函数
                full_name: function () {
                    return this.first_name + " " + this.last_name
                }
            }
        })
    </script>
    ```
    二.监听命令watch
    ```html
    <body>
        <div id="app">
            姓名<input type="text" v-model="full_name">
            <hr>
            <p>{{ first_name }}</p>
            <hr>
            <p>{{ last_name }}</p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: "#app",
            data: {
                full_name: "",
                first_name: "",
                last_name: "",
            },
            watch: {
                // wacth只是对已有的变量进行值变化的监听, 一旦发现值变化,系统自动回调监听变量后的函数
                // 后方函数和前方变量只有数据变化的监听绑定关系, 没有值相关的联系
                full_name: function () {
                    arr = this.full_name.split(" ");
                    this.first_name = arr[0];
                    this.last_name = arr[1];
                }
            }
        })
    </script>
    ```
    
    

    三.条件渲染

    ```html
    <style>
        .wrap {
            width: 300px;
        }
        .box {
            width: 100px;
            height: 100px;
        }
        .red {
            background-color: red;
            float: left;
        }
        .orange {
            background-color: orange;
            float: right;
        }
    </style>
    <body>
        <div id="app">
            <button @click="rAction">red切换</button>
            <button @click="oAction">orange切换</button>
            <div class="wrap">
                <!-- v-if 值为false时, 不会被渲染   -->
                <!-- 了解 :key由vue控制的属性key值需要唯一标识,因为key的值就是vue对该组件在内存中建立缓存的key -->
                <div class="box red" v-if="r_show" :key="key" ></div>
                <!-- v-show 值为false时, 以display:none被渲染 -->
                <div class="box orange" v-show="o_show"></div>
            </div>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: "#app",
            data: {
                r_show: true,
                o_show: true
            },
            methods: {
                rAction: function () {
                    this.r_show = !this.r_show;
                },
                oAction: function () {
                    this.o_show = !this.o_show;
                }
            }
        })
    </script>
    ```
    四.循环渲染
    ``html
    <body>
        <div id="app">
            <ul>
                <li>{{ ls[0] }}</li>
                <li>{{ ls[1] }}</li>
                <li>{{ ls[2] }}</li>
                <li>{{ ls[3] }}</li>
            </ul>
            <ul>
                <li v-for="(ele, index) in ls">{{ ele }} {{ index }}</li>
            </ul>
            <ul>
                <li v-for="(value, key, index) in dic">{{ key }} {{ value }} {{ index }}</li>
            </ul>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: "#app",
            data: {
                ls: ['张三', '李四', '王五', '赵六', '钱七'],
                dic: {
                    name: 'Bob',
                    age: 88,
                    gender: ''
                }
            },
    
        })
    </script>
    ```
    
    

    五.组件初识

    ```html
    <body>
        <div id="app">
            {{ msg }}
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // 每个组件均具有自身的模板template,根组件的模板就是挂载点
        new Vue({
            // 根组件一定需要挂在点(否则无法渲染到页面中), 一般情况下, 根组件的template就取挂载点,不需要自定义
            el: "#app",
            data: {
                msg: "信息"
            },
            // template就是组件的html架构
            // 每个组件模板只能拥有一个根标签
            template: "<div><p>锻炼</p></div>"
        })
    </script>
    ```
    六局部组件
    ```html
    <body>
        <div id="app">
            <abc></abc>
            <abc></abc>
            <abc></abc>
        </div>
        <hr>
        <div id="main">
            <local-tag></local-tag>
            <local-tag></local-tag>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // 局部组件
        var localTag = {
            // 子组件的数据具有作用域,以达到组件的复用, 每一个复用的组件具有自身独立的一套数据
            data: function () {
                return {  // 返回值是一个数据字典(一套数据)
                    count: 0
                }
            },
            template: "<div @click='fn'>点击{{ count }}次</div>",
            methods: {
                fn: function () {
                    this.count += 1;
                }
            }
        }
    
        // app根组件
        new Vue({
            el: "#app",
            // 注册
            components: {
                'abc': localTag
            }
        })
        // main根组件
        new Vue({
            el: "#main",
            components: {
                // localTag
                'local-tag': localTag
            }
        })
    </script>
    ```
    
    
    



  • 相关阅读:
    10 Mysql之数据备份与还原
    09 Mysql之创建用户和授权
    08 Mysql之Navicat工具以及Pymysql模块
    架构师成长之路之限流漫谈
    为什么程序员应该有一台 Mac 个人电脑
    Java中的锁原理、锁优化、CAS、AQS详解!
    SSM 实现支付宝支付功能(图文详解+完整代码)
    IDEA 调试图文教程,让 bug 无处藏身!
    记住:永远不要在 MySQL 中使用 UTF-8
    我爸的电脑中了勒索病毒……
  • 原文地址:https://www.cnblogs.com/ye-hui/p/10394794.html
Copyright © 2011-2022 走看看