zoukankan      html  css  js  c++  java
  • day-78vue

    vue的指令

    6.循环指令

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>循环指令</title>
    </head>
    <body>
        <div id="app">
    
            <ul>
                <li v-for="s in arr">{{ s }}</li>                                             <!--  1.列表循环指令: v-for="ele in 容器变量" -->
            </ul>
            <hr>
           
            
            <ul>
                <li v-for="(s, i) in arr" :key="s" b="b">第{{ i }}个:{{ s }}</li>             <!--key属性是vue的属性,表示为该标签在内存中建立缓存的依据-->    
            </ul>                                                                                 <!--:key把s变成变量,代表唯一性-->    
                    
    
                    <!-- s是列表的值,i是列表的索引-->
            <ul>
                <li v-for="v in person">{{ v }}</li>
            </ul>
           
            <ul>            
                <li v-for="(v, k, i) in person">{{ k }}:{{ v }}:{{ i }}</li>                <!--  2.字典循环指令: v-for="ele in 容器变量" -->
            </ul>                                                                                 <!-- v是字典的值,k是字典的键,i是字典的索引-->
            <hr>
    
         
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                arr: ['aaa', 'bbb', 'ccc'],
                person: {
                    'name': 'Bob',
                    'age': 18,
                    'sex': ''
                }
    
        })
    </script>
    </html>

     前台数据库

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>前台数据库</title>
    </head>
    <body>
        <h1>前台数据库</h1>
    </body>
    <script>
         window.localStorage                    // 永久存储仓库
         window.sessionStorage                  // 临时存储仓库
    
        
        localStorage['name'] = 'Owen'           //
       
        console.log(localStorage.name);          //
    
       
        sessionStorage.age = 18;                 // 存,存完注释
      
        console.log(sessionStorage['age']);       //
    
       
    
        
        localStorage.clear();                     // 清空
        localStorage.clear();
    
      
    
    </script>
    </html>

    差值表达式符号的修改

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>符号修改</title>
    </head>
    <body>
        <div id="app">
            <p>{{ msg }}</p>                <!--Django支持的格式-->
            
            <p>${ msg }</p>        
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '信息'
            },
            
            delimiters: ['${', '}'],            <!--差值表达式支持的格式-->
        })
    </script>
    </html>

    计算属性

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>监听多个变量</title>
    </head>
    <body>
        <div id="app">
            <input type="text" v-model="a_val">
            <input type="text" v-model="b_val">
            <input type="text" v-model="c_val">
            <p>
                {{ val_fn }}
            </p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                a_val: '',
                b_val: '',
                c_val: '',
            },
     
           
            computed: {                                                         // computed:用来解决一个变量值依赖一个或多个变量值
                val_fn () {                                                     // val_fn, 可以直接作为变量被渲染,值为方法的返回值
                    // this.a_val;
                    // this.b_val;
                    // this.c_val;
                   
                    return this.a_val + this.b_val + this.c_val;            //在方法名被渲染后,方法内部的所有变量都会被监听
                }
            }
        })
    </script>
    </html>

    监听属性

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>监听属性</title>
    </head>
    <body>
        <div id="app">
            <p>
                姓名:<input type="text" v-model="full_name">
            </p>
            <p>
                姓:<input type="text" v-model="last_name">
            </p>
             <p>
                名:<input type="text" v-model="first_name">
            </p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                full_name: '',
                last_name: '',
                first_name: '',
            },
        
            
           
        
            watch: {                                                              // watch:管理 监听绑定的属性(提前要存在) 的方法,用来解决多个变量值依赖一个变量值
                full_name () {                                                     // full_name, 被监听的变量名(属性)
                   
                  
                    let name = this.full_name.split(' ');                         // 在方法名被渲染后,方法名代表的属性值改变,绑定的方法就会被调用,如下
                    this.last_name = name[0];
                    this.first_name = name[1];
                }
            }
        })
    </script>
    </html>

    根组件

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <h1 id="app">
            {{ msg }}
        </h1>
        <div id="main">
            {{ msg }}
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
       
        
        let app = new Vue({                                                // 1、new Vue创建的是vue实例,一个实例就是一个vue组件,new出了的实例称之为根组件
                                                                                // 注:在实际开发中一个页面只有一个根组件
        
            el: '#app',                                                            // 注:挂载点是必须的(作为虚拟DOM渲染替换的依据),挂载点可以读取,作为根组件的模板
            
            data: {
                msg: 'app的msg',
                c: 'red'
            },
                                        
            template: 
            `<h1 id="app" :style="{color: c}" @click="action">         // 2、每个组件均由 html模板 css样式 js逻辑 组成
            {{ msg }}                                                        // html模板:通过template使用,但根组件的模板就采用挂载点即可,无需创建自身template,也就是html已经写好了
            </h1>                                                            
            `,
                                                                       // 3、根组件内部可以注册使用n个子组件,但子组件必须拥有自己的 html模板 css样式 js逻辑
            
            
            methods: {
                action () {
                    alert(this.msg)
                }
            }
        });
        
        
        
        
        let main = new Vue({
            el: '#main',
            data: {
                msg: 'main的msg'
            }
        });
        // 知识点:利用原生js完成两个组件的交互
        
        // 获取组件的数据
        // console.log(app.msg);
        
        // 修改组件的数据
        // app.msg = '12345';
        main.msg = app.msg;
    
    </script>
    </html>

     局部组件

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>局部组件</title>
        <style>
            .box {
                width: 200px;
                text-align: center;
                border: 1px solid black;
                border-radius: 10px;
                overflow: hidden;
                float: left;
            }
            .box img {
                width: 100%;
            }
            .box p {
                margin: 0;
            }
            .box span:hover {
                cursor: pointer;
                color: orange;
            }
        </style>
    </head>
    <body>
        <div id="app">
       
    
            <box-tag></box-tag>
            <box-tag></box-tag>
    
      
          
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
     
    
        let box = {
        
        
            template: `                                                                
                                                                                        
            <div class="box">
                <img src="img/001.jpg" alt="">
                <p>
                    <span @click="btnClick">点击了{{ num }}下</span>
                    <p>野兽</p>
                </p>
            </div>
            `,
      
      
            data () {                                 // 每个复用的子组件都应该有自己的一套数据,所以要用一个局部作用域存储,保证数据的隔离性
                return {                            // data的值还是字典,所以函数的返回值是字典即可
                    num: 0            
                }
            },
            
            
            methods: {                                    
                btnClick () {                        //方法可以共用
                    this.num += 1;
                }
            }
        };
    
        new Vue({
            el: '#app',
            
            components: {                            //注册局部组件
                box,                                  // key与value变量同名,也可以简写
                boxTag: box,                          // js支持的驼峰命名法与html的-连接有语法对应
              
            },
            
            data: {
                box_data: data
            }
          
        })
    </script>
    </html>

     全局组件

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>全局组件</title>
    </head>
    <body>
        <div id="app">
       
    
            <g-tag></g-tag>
            <g-tag></g-tag>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
    
       
        Vue.component('gTag', {                                 // 全局组件,通过 Vue.component('组件名', {组件对象主体}),就相当于Vue自带的模块;
        
                template: `
                <p>
                    <span @click="action">{{ num }}</span>
                </p>
                `,
                data () {
                    return {
                        num: 0
                    }
                },
                
                methods: {
                    action() {
                        this.num++;
                    }
                }
            }
        );
    
        new Vue({
            el: '#app',
            components: {
                
            }
        })
    </script>
    </html>

    数据父传子

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>父传子</title>
    </head>
    <body>
        <div id="app">
         
    
            <sub-tag :a="msg"></sub-tag>                                      <!--1)父组件模板中写子组件标签,msg变量由父级提供 -->
                                                                              <!--2)父组件的数据绑定给子组件标签的自定义属性,也就是:a -->
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        let subTag = {
           
            props: ['a'],                                                      <!--3)在子组件内部通过props拿到自定义属性 -->
            template: `
            <div>
                <h1>{{ a }}</h1>                                               <!--4)使用自定义属性就可以获得父组件的数据 -->
            </div>
            `
        };
    
        new Vue({
            el: '#app',
            
            data: {
                msg: '父级数据'
            },
            
            components: {
                subTag,
            }
        })
    </script>
    </html>

     数据子传父

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <div id="app">
       
            <sub-tag @send_val="recv_val"></sub-tag>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        let subTag = {
        
            template: `
            <div>
                <input type="text" v-model="val">
                <button @click="changeTitle">修改</button>        <!--1)触发子组件事件 -->
            </div>
            `,
            
            data () {
                return {
                    val: ''
                }
            },
            methods: {
                changeTitle () {
                  
                    this.$emit('send_val', this.val);            <!--2)子组件事件通过$emit,将数据传到子组件事件@send_val中 -->
    
                }
            }
    
        };
    
        new Vue({
            el: '#app',
         
            components: {
                subTag
            },
            methods: {
                recv_val (val) {                            <!--3)父组件通过recv_val事件(变量)来接收数据 -->
                    aloct(val)
                }
            }
        })
    </script>
    </html>
  • 相关阅读:
    from fake_useragent import UserAgent
    teamviewer 安装 仅学习
    利用pandas 中的read_html 获取页面表格
    第十二天 最恶心的考试题
    第十三天 生成器和生成器函数, 列表推导式
    第十一天 函数名的使用以及第一类对象, 闭包, 迭代器
    第十天 动态参数,名称空间,作用域,函数的嵌套,gloabal / nonlocal 关键字
    初始函数, 函数的定义,函数名,函数体以及函数的调用,函数的返回值,函数的参数
    第八天 文件的读,写,追加,读写,写读,seek()光标的移动,修改文件以及另一种打开文件的方式
    第七天 1.基础数据类型的补充 2.set集合 3.深浅拷贝
  • 原文地址:https://www.cnblogs.com/klw1/p/11322735.html
Copyright © 2011-2022 走看看