Day01Code

作者: 鸟它鸟 | 来源:发表于2018-07-28 22:51 被阅读0次

    汤小洋Vue课程代码记录
    课程连接地址:http://edu.51cto.com/course/10543.html
    抄录至简书仅方便自己查阅代码,小伙伴们可以去学院支持该课程

    code01

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Hello World</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                //配置是否允许vue-devtools检查代码,方便调试,生产环境中需要设置为false
                Vue.config.devtools=false;
                Vue.config.productionTip=false; //阻止vue启动时生成生产消息
    
                var vm=new Vue({
                    el:'#itany', //指定关联的元素
                    data:{ //存储数据
                        msg:'Hello World'
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            {{msg}} <!-- 两对大括号{{}}称为模板,用来进行数据的绑定显示在页面中 -->
        </div>
    
        <h3>
            {{msg}}
        </h3>
    </body>
    </html>
    

    code02

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>常用指令:v-model</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                new Vue({
                    // el:'.itany',
                    el:'div', //vue2.0中不允许将vue实例挂载到<html>或<body>元素,在vue1.0中是可以的
                    data:{
                        name:'', //即使没有值,也不能省略,报错
                        age:21,
                        flag:true,
                        nums:[12,4,23,5],
                        user:{id:9527,name:'唐伯虎'}
                    }
                });
            }
        </script>
    </head>
    <body>
        <!-- <div id="itany"> -->
        <!-- <div class="itany"> -->
        <div>
            用户名:<input type="text" v-model="name">
            <br>
    
            {{name}} <br>
            {{age}} <br>
            {{flag}} <br>
            {{nums}} <br>
            {{user}}
        </div>
    </body>
    </html>
    

    code03

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>常用指令:v-for</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                new Vue({
                    el:'#itany',
                    data:{
                        arr:[12,4,5,34,2,11],
                        user:{id:9527,name:'唐伯虎',age:25},
                        arr2:[12,4,5,34,2,11,12],
                        users:[
                            {id:9527,name:'唐伯虎',age:25},
                            {id:1001,name:'秋香',age:22},
                            {id:1002,name:'石榴姐',age:24}
                        ]
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            <!-- {{arr}} -->
    
            <ul>
                <!-- 普通循环 -->
                <!-- <li v-for="value in arr">{{value}}</li> -->
                <!-- <li v-for="value in user">{{value}}</li> -->
    
                <!-- 键值循环 -->
                <!-- <li v-for="(v,k) in arr">{{k}}={{v}}</li> -->
                <!-- <li v-for="(v,k) in user">{{k}}={{v}}</li> -->
    
                <!-- 可以直接循环包含重复数据的集合,可以通过指定:key属性绑定唯一key,当更新元素时可重用元素,提高效率,类似于vue1.0中track-by -->
                <!-- <li v-for="(v,k) in arr2" :key="k">{{v}}</li> -->
    
                <li v-for="(user,index) in users">
                    {{index+1}},{{user.id}},{{user.name}},{{user.age}}
                </li>
            </ul>
        </div>
    </body>
    </html>
    

    code04

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>常用指令:v-on</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{  //存储数据
                        arr:[12,34,45,23,5]
                    },
                    methods:{ //存储方法
                        show:function(){
                            console.log('show方法');
                        },
                        add(){
                            // console.log(this); //this表示当前vue实例
                            // console.log(this===vm); //true
                            this.arr.push(666); //使用this访问当前实例中的成员
                            // this.show();
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            <!-- <button onclick="show()">点我</button> -->
            <button v-on:click="show">点我</button>
            <button v-on:click="add()">向数组中添加一个元素</button>
            <br>
            {{arr}}
            <hr>
            
            <button v-on:mouseover="show">鼠标经过</button>
            <button v-on:dblclick="show">鼠标双击</button>
        </div>
    </body>
    </html>
    

    code05

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>常用指令:v-show</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{ 
                        flag:true
                    },
                    methods:{ 
                        change(){
                            this.flag=!this.flag;
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            <!-- <button v-on:click="change">隐藏</button> -->
            <button v-on:click="flag=!flag">隐藏</button>
    
            <hr>
            <div style="width: 100px;height: 100px; background-color: red" v-if="flag">欢迎来到南京网博</div>
        </div>
    </body>
    </html>
    

    code06

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>练习:用户管理</title>
        <script src="js/vue.js"></script>
        <link rel="stylesheet" href="bootstrap/bootstrap.min.css">
        <script src="bootstrap/jquery.min.js"></script>
        <script src="bootstrap/bootstrap.min.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'.container',
                    data:{ 
                        users:[
                            {name:'tom',age:24,email:'tom@itany.com'},
                            {name:'jack',age:23,email:'jack@sina.com'}
                        ],
                        user:{},
                        nowIndex:-1 //当前要删除项的索引
                    },
                    methods:{ 
                        addUser(){
                            this.users.push(this.user);
                            this.user={};
                        },
                        deleteUser(){
                            if(this.nowIndex===-1){ //删除所有
                                this.users=[];
                            }else{
                                this.users.splice(this.nowIndex,1); //从指定索引位置开始删除,删除一个
                            }
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
        <div class="container">
            <h2 class="text-center">添加用户</h2>
            <form class="form-horizontal">
                <div class="form-group">
                    <label for="name" class="control-label col-sm-2 col-sm-offset-2">姓  名:</label>
                    <div class="col-sm-6">
                        <input type="text" class="form-control" id="name" v-model="user.name" placeholder="请输入姓名">
                    </div>
                </div>
                <div class="form-group">
                    <label for="age" class="control-label col-sm-2 col-sm-offset-2">年  龄:</label>
                    <div class="col-sm-6">
                        <input type="text" class="form-control" id="age" v-model="user.age" placeholder="请输入年龄">
                    </div>
                </div>
                <div class="form-group">
                    <label for="email" class="control-label col-sm-2 col-sm-offset-2">邮  箱:</label>
                    <div class="col-sm-6">
                        <input type="text" class="form-control" id="email" v-model="user.email" placeholder="请输入邮箱">
                    </div>
                </div>
                <div class="form-group text-center">
                    <input type="button" value="添  加" class="btn btn-primary" v-on:click="addUser">
                    <input type="reset" value="重  置" class="btn btn-primary">
                </div>
            </form>
            <hr>
    
            <table class="table table-bordered table-hover">
                <caption class="h3 text-center text-info">用户列表</caption>
                <thead>
                    <tr>
                        <th class="text-center">序号</th>
                        <th class="text-center">姓名</th>
                        <th class="text-center">年龄</th>
                        <th class="text-center">邮箱</th>
                        <th class="text-center">操作</th>
                    </tr>
                </thead>
                <tbody>
                    <tr v-for="(user,index) in users" class="text-center">
                        <td>{{index+1}}</td>
                        <td>{{user.name}}</td>
                        <td>{{user.age}}</td>
                        <td>{{user.email}}</td>
                        <td>
                            <button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#del" v-on:click="nowIndex=index">删除</button>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="5" class="text-right">
                            <button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#del" v-on:click="nowIndex=-1">删除所有</button>
                        </td>
                    </tr>
                </tbody>
            </table>
    
            <!-- 模态框,弹出框 -->
            <div class="modal fade" id="del">
                <div class="modal-dialog">
                    <div class="modal-content">
                        <div class="modal-header">
                            <button class="close" data-dismiss="modal">
                                <span>&times;</span>
                            </button>
                            <h4 class="modal-title" v-show="nowIndex!==-1">确认要删除用户:{{users[nowIndex]?users[nowIndex].name:''}} 吗?</h4>
                            <h4 class="modal-title" v-show="nowIndex===-1">确认要删除所有用户吗?</h4>
                        </div>
                        <div class="modal-body text-center">
                            <button class="btn btn-primary" data-dismiss="modal">取消</button>
                            <button class="btn btn-primary" data-dismiss="modal" v-on:click="deleteUser">确认</button>
                        </div>
                    </div>
                </div>
            </div>
    
    
        </div>
    </body>
    </html>
    

    code07

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>事件简写和事件对象$event</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    methods:{ 
                        show(){
                            console.log(111);
                        },
                        print(e){
                            // console.log(e);
                            console.log(e.target.innerHTML); //DOM对象
                            console.log(this);
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            <button v-on:click="show">点我</button>
            <button @click="show">点我</button>
            <hr>
    
            <button @click="print($event)">Click Me</button>
        </div>
    </body>
    </html>
    

    code08

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>事件冒泡和默认行为</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    methods:{ 
                        show(){
                            console.log(111);
                            // e.stopPropagation();
                        },
                        print(){
                            console.log(222);
                        },
                        write(){
                            console.log(333);
                        },
                        study(){
                            console.log(444);
                            // e.preventDefault();
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            <div @click="write">
                <p @click="print">
                    <!-- <button @click="show($event)">点我</button> -->
                    <button @click.stop="show">点我</button>
                </p>
            </div>
            <hr>
    
            <!-- <a href="#" @click="study($event)">俺是链接</a> -->
            <a href="#" @click.prevent="study">俺是链接</a>
        </div>
    </body>
    </html>
    

    code09

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>键盘事件</title>
        <script src="js/vue.js"></script>
        <script>
            /**
             * 自定义键位别名
             */
            Vue.config.keyCodes={
                a:65,
                f1:112
            }
    
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    methods:{ 
                        show(e){
                            console.log(e.keyCode);
                            if(e.keyCode==13){
                                console.log('您按了回车');
                            }
                        },
                        print(){
                            // console.log('您按了回车');
                            // console.log('您按了方向键上');
                            console.log('11111');
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            <!-- 键盘事件:@keydown、@keypress、@keyup -->
            <!-- 用户名:<input type="text" @keydown="show($event)"> -->
            
            <!-- 简化按键的判断 -->
            <!-- 用户名:<input type="text" @keydown="show($event)"> -->
            <!-- 用户名:<input type="text" @keydown.13="print"> -->
            <!-- 用户名:<input type="text" @keydown.enter="print"> -->
            <!-- 用户名:<input type="text" @keydown.up="print"> -->
            用户名:<input type="text" @keydown.f1="print">
            
            <!-- 事件修饰符 -->
            <button @click.once="print">只触发一次</button>
        </div>
    </body>
    </html>
    

    code10

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>属性绑定和属性的简写</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{
                        url:'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png',
                        w:'200px',
                        h:'100px'
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            <!-- <img src="{{url}}"> -->
            {{url}}
            <!-- 可以直接访问vue中的数据,不需要使用{{}} -->
            <!-- <img v-bind:src="url"> -->
    
            <img :src="url" :width="w" :height="h">
        </div>
    </body>
    </html>
    

    code11

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>class和style属性</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{
                        bb:'aa',
                        dd:'cc',
                        flag:true,
                        num:-2,
                        hello:{aa:true,cc:true},
                        xx:{color:'blue',fontSize:'30px'},
                        yy:{backgroundColor:'#ff7300'}
                    }
                });
            }
        </script>
        <style>
            .aa{
                color:red;
                font-size:20px;
            }
            .cc{
                background-color:#ccc;
            }
        </style>
    </head>
    <body>
        <div id="itany">
            <!-- 
                class属性
             -->
            <!-- <p class="aa">南京网博</p> -->  <!-- 可以访问,普通css方式 -->
    
            <!-- <p :class="aa">南京网博</p> --> <!-- 不可以,Vue的属性绑定时不能直接css样式 -->
    
            <!-- 方式1:变量形式 -->
            <!-- <p :class="bb">南京网博</p> -->
    
            <!-- 方式2:数组形式,同时引用多个 -->
            <!-- <p :class="[bb,dd]">南京网博</p> -->
    
            <!-- 方式3:json形式,常用!!! -->
            <!-- <p :class="{aa:true,cc:flag}">南京网博</p> -->
            <!-- <p :class="{aa:num>0}">南京网博</p> -->
    
            <!-- 方式4:变量引用json形式 -->
            <!-- <p :class="hello">南京网博</p> -->
            
            <!-- 
                style属性
             -->
             <p :style="[xx,yy]">itany</p>
    
        </div>
    </body>
    </html>
    

    code12

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
        <script src="js/vue.js"></script>
        <script>
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{
                        msg:'welcome to itany'
                    },
                    created:function(){
                        // alert(111);
                    }
                });
            }
        </script>
        <style>
            /* 必须配置css样式,否则不生效 */
            [v-cloak]{ 
                display:none;
            }
        </style>
    </head>
    <body>
        <div id="itany">
            <input type="text" v-model="msg">
    
            <h3>aaa<span v-cloak>{{msg}}</span></h3>
            
            <h3 v-text="msg"></h3>
    
            <h3 v-html="msg"></h3>
    
            <h3 v-once>{{msg}}</h3>
    
            <h3 v-pre>{{msg}}</h3>
    
    
        </div>
    </body>
    </html>
    

    code13

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>自定义过滤器</title>
        <script src="js/vue.js"></script>
        <script>
            /**
             * 自定义全局过滤器
             */
            Vue.filter('addZero',function(data){
                // console.log(data);
                return data<10?'0'+data:data;
            });
            /*Vue.filter('number',(data,n) => {
                // console.log(data,n);
                return data.toFixed(n);
            });*/
            Vue.filter('date',data => {
                let d=new Date(data);
                return d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+' '+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();
            });
            
    
            window.onload=function(){
                let vm=new Vue({
                    el:'#itany',
                    data:{
                        currentTime:Date.now()
                    },
                    filters:{ //局部过滤器
                        number:(data,n) => {
                            return data.toFixed(n);
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
        <div id="itany">
            <!-- <h3>{{3 | addZero}}</h3> -->
            
            <!-- 课后作业:自己实现toFiexed()四舍五入的功能 -->
            <h3>{{12.345678 | number(2)}}</h3>
            <!-- <h3>{{12.045 | number(2)}}</h3> -->
    
            <h3>{{currentTime | date}}</h3>
        
        </div>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:Day01Code

          本文链接:https://www.haomeiwen.com/subject/czmamftx.html