• 自定义Vue组件


    自定义Vue组件的三步骤

    1、创建组件

    2、注册组件

    3、使用组件

    创建组件

        //创建组件
                var myclock = {
                    data(){
                        return {
                            clock: new Date().toLocaleString(),
                            _timer:null
                        }
                    },
                    methods:{
                        updateTime(){
                            this.clock = new Data().toLocaleString();
                        }
                    },
                    created(){
                        this._timer = setInterval(this.update,1000); 
                    },
                    beforeDestroy(){
                        this._timer.cancel();
                    },
                    template:`<div>{{clock}}</div>`
                };

    注册组件

        //注册组件,名为myclock
                Vue.component("myclock",myclock);
                var vm = new Vue({
                    el: "#app"
                });

    使用组件

            <div id="app">
                <h3>组件示例</h3>
                <div>
                    <!-- 使用组件 -->
                    <myclock></myclock>
                </div>
            </div> 

    运行结果

    一些简单例子代码

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <script src="js/incbutton.js"></script>
            <script src="js/vue.js"></script>
            <div id="app">
                <h3>组件示例</h3>
                <div>
                    <!-- 使用组件 -->
                    <incbutton></incbutton>
                    <br />
                    <myclick></myclick>
                    <br/>
                    <myclock></myclock>
                </div>
            </div>
    
            <script>
                //定义组件
                var mytemplate1 = {
                    template: `<div>
                            <button @click='dianzan' v-bind:style="{color:colors}" >点赞</button>
                            <button @click='guanzhu' v-bind:style="{color:colors1}" >关注</button>
                            <myclock></myclock>
                               </div>`,
                    data() {
                        return {
                            isNumber: 1,
                            isCount: 1,
                            colors:'',
                            colors1:''
                        }
                    },
                    methods: {
                        dianzan(){
                            this.isNumber = this.isNumber +1 ;
                            
                            if(this.isNumber % 2 == 0 ){
                                this.colors ="red";
                            }else{
                                this.colors ="black";
                            }
                            
                        },
                        guanzhu(){
                            this.isCount = this.isCount +1 ;
                            
                            if(this.isCount % 2 == 0 ){
                                this.colors1 ="red";
                            }else{
                                this.colors1 ="black";
                            }
                        }
                    }
                };
                
                //注册组件
                var myclock = {
                    data(){
                        return {
                            clock: new Date().toLocaleString(),
                            _timer:null
                        }
                    },
                    methods:{
                        updateTime(){
                            this.clock = new Data().toLocaleString();
                        }
                    },
                    created(){
                        this._timer = setInterval(this.update,1000); 
                    },
                    beforeDestroy(){
                        this._timer.cancel();
                    },
                    template:`<div>{{clock}}</div>`
                };
                
                
                //注册组件,名为myclock
                Vue.component("myclock",myclock);
    
                //注册组件,名为myclick
                Vue.component("myclick", mytemplate1)
    
                //注册组件,名为incbutton
                Vue.component("incbutton", myTemplate);
                var vm = new Vue({
                    el: "#app"
                });
            </script>
        </body>
    </html>
    将组件封装成js文件 然后调用。incbutton.js
                //定义组件
                var myTemplate = {
                    //  ` 模板字符串 ` es6,随便换行,缺点 --> 兼容性不太行 只能在es6环境中运行
                    // ''
                    // ""
                    template:`
                    <div>使用说明
                        <ul>
                            <li>点击一下,数字增加</li>
                            <li>如果大于0,鼠标移到按钮上去减1啦</li>
                        </ul>
                        <button @click='incr' @mouseover='decr' >你已经点击了{{count}}</button>
                    </div>`,
                    data() {
                        return {
                            count:0
                        }
                    },
                    methods:{
                        incr(){
                            this.count = this.count +1 ;
                        },
                        decr(){
                            this.count = this.count >0 ? this.count -1:0;
                        }
                    }
                };
  • 相关阅读:
    51nod1693 水群
    51nod 1158 全是1的最大子矩阵
    poj1192 最优连通子集(树形dp)
    51nod 1051 最大子矩阵和(dp)
    codeforces723 D. Lakes in Berland(并查集)
    51nod 1065 最小正子段和
    poj1122 FDNY to the Rescue!(dij+反向建图+输出路径)
    51nod 1050 循环数组最大子段和
    hdu4781 Assignment For Princess(构造)
    51nod 1043 幸运号码(数位dp)
  • 原文地址:https://www.cnblogs.com/oukele/p/9981972.html
Copyright © 2020-2023  润新知