zoukankan      html  css  js  c++  java
  • vue19 组建 Vue.extend component、组件模版、动态组件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
        </div>
        <script>
            var Aaa=Vue.extend({//继承出来一个Vue类Aaa
                template:'<h3>我是标题3</h3>'
            });
            var a=new Aaa();//a跟vm一样
            console.log(a);
            var vm=new Vue({
                el:'#box',
                data:{
                    bSign:true
                }
            });
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <aaa></aaa>
        </div>
        <script>
            var Aaa=Vue.extend({
                template:'<h3>我是标题3</h3>'
            });
            Vue.component('aaa',Aaa);//aaa是组建实例,全局组件
            var vm=new Vue({
                el:'#box',
                data:{
                    bSign:true
                }
            });
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <aaa></aaa>
        </div>
    
        <script>
            var Aaa=Vue.extend({
                data(){
                    return {
                        msg:'我是标题^^'
                    };
                },
                template:'<h3>{{msg}}</h3>'
            });
    
            Vue.component('aaa',Aaa);
    
    
            var vm=new Vue({
                el:'#box',
                data:{
                    bSign:true
                }
            });
    
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <aaa></aaa>
        </div>
    
        <script>
            var Aaa=Vue.extend({
                data(){
                    return {
                        msg:'我是标题^^'
                    };
                },
                methods:{
                    change(){
                        this.msg='changed'
                    }
                },
                template:'<h3 @click="change">{{msg}}</h3>'
            });
    
            Vue.component('aaa',Aaa);
    
    
            var vm=new Vue({
                el:'#box',
                data:{
                    bSign:true
                }
            });
    
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <aaa></aaa>
        </div>
    
        <script>
            var Aaa=Vue.extend({
                template:'<h3>{{msg}}</h3>',
                data(){// es6语法,函数不写:,组件里面放数据: data必须是函数的形式,函数必须返回一个对象(json)
                    return {
                        msg:'ddddd'
                    }
                }
            });
    
    
            var vm=new Vue({
                el:'#box',
                data:{
                    bSign:true
                },
                components:{ //局部组件,放到某个组件内部,Vue.component('aaa',Aaa);
                    aaa:Aaa
                }
            });
    
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <my-aaa></my-aaa>
        </div>
        <script>
            var Aaa=Vue.extend({
                template:'<h3>{{msg}}</h3>',
                data(){
                    return {
                        msg:'ddddd'
                    }
                }
            });
            var vm=new Vue({
                el:'#box',
                data:{
                    bSign:true
                },
                components:{ //局部组件
                    'my-aaa':Aaa
                }
            });
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <my-aaa></my-aaa>
        </div>
        <script>
            Vue.component('my-aaa',{//全局,公共的提出去
                template:'<strong>好</strong>'
            });
            var vm=new Vue({
                el:'#box'
            });
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <my-aaa></my-aaa>
        </div>
        <script>
            var vm=new Vue({
                el:'#box',
                components:{ //局部
                    'my-aaa':{
                        data(){
                            return {
                                msg:'welcome vue'
                            }
                        },
                        methods:{
                            change(){
                                this.msg='changed';
                            }
                        },
                        template:'<h2 @click="change">标题2->{{msg}}</h2>'
                    }
                }
            });
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <my-aaa></my-aaa>
        </div>
    
        <template id="aaa">
            <h1>标题1</h1>
            <ul>
                <li v-for="val in arr">
                    {{val}}
                </li>
            </ul>
        </template>
    
        <script>
            var vm=new Vue({
                el:'#box',
                components:{
                    'my-aaa':{
                        data(){
                            return {
                                msg:'welcome vue',
                                arr:['apple','banana','orange']
                            }
                        },
                        methods:{
                            change(){
                                this.msg='changed';
                            }
                        },
                        template:'#aaa'
                    }
                }
            });
    
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <my-aaa></my-aaa>
        </div>
    
        <script type="x-template" id="aaa">
            <h2 @click="change">标题2->{{msg}}</h2>
            <ul>
                <li>1111</li>
                <li>222</li>
                <li>3333</li>
                <li>1111</li>
            </ul>
        </script>
    
        <script>
            var vm=new Vue({
                el:'#box',
                components:{
                    'my-aaa':{
                        data(){
                            return {
                                msg:'welcome vue'
                            }
                        },
                        methods:{
                            change(){
                                this.msg='changed';
                            }
                        },
                        template:'#aaa'
                    }
                }
            });
    
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>动态组件</title>
        <script src="bower_components/vue/dist/vue.js"></script>
        <style>
        </style>
    </head>
    <body>
        <div id="box">
            <input type="button" @click="a='aaa'" value="aaa组件">
            <input type="button" @click="a='bbb'" value="bbb组件">
            <component :is="a"></component> <!-- 动态组件-->
        </div>
    
        <script>
            var vm=new Vue({
                el:'#box',
                data:{
                    a:'aaa'
                },
                components:{
                    'aaa':{
                        template:'<h2>我是aaa组件</h2>'
                    },
                    'bbb':{
                        template:'<h2>我是bbb组件</h2>'
                    }
                }
            });
    
        </script>
    </body>
    </html>
  • 相关阅读:
    window.open跨页面传输
    history对象
    类vr特效的360度全景
    移动端图片滑动
    图片拼图
    20180808 考试记录
    [jzoj 5770]【2018提高组模拟A组8.6】可爱精灵宝贝 (区间dp)
    20180806 考试记录
    [luogu2319 HNOI2006] 超级英雄 (匈牙利算法)
    [luogu2679] 子串 (多维dp)
  • 原文地址:https://www.cnblogs.com/yaowen/p/6977695.html
Copyright © 2011-2022 走看看