vue组件基本参数

注册全局组件

 

<!--注册全局组件-->
    <div id="app">
        <!--
            组件使用驼峰命名法使用时候需要使用-小写调用
        -->
        <my-com1></my-com1>
    </div>
    <script>
        /*
        使用Vue.component创建组件,参数1为组件名称
        
        */
        Vue.component('myCom1', {
            //通过template属性指定组件要展示的html结构
            template: '<h3>Vue.extend创建组件</h3>'
        })
        let vm = new Vue({
            el: '#app',
            data: {}
        })
    </script>

<!--注册全局组件-->
    <div id="app">
        <mycom1></mycom1>
    </div>
    <!--在被控制的#app外使用template 元素-->
    <template id="temp1">
        <div>
            <h1>通过template组件</h1>
        </div>
    </template>
    <script>
    Vue.component('mycom1',{
        template:'#temp1'
    })
    let vm=new Vue({
        el:'#app',
        data:{
        }
    })
    </script>

  

注册私有组件

<div id="app2">
            <login></login>
    </div>
    <template id="temp2">
            <h2>私有组件</h2>
    </template>

new Vue({
        el:'#app2',
        data:{},
        methods:{},
        filters:{},
        directives:{},
        components:{    //定义私有组件
            login:{
                template:'#temp2'
            }
        },
        beforeCreate(){},
        created(){},
        beforeMount(){},
        mounted(){},
        beforeUpdate(){},
        updated(){},
        beforeDestroy(){},
        destroyed(){}
    })

父组件传递值到子组件

<div id="app">
        <!--父组件可以在引用子组件时候可以通过属性绑定的形式,
            把需要传递给子组件的数组以属性绑定的形式传递-->
        <com1 :parentmsg="msg"></com1>
    </div>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {
                msg: '123 父组件'
            },
            methods: {},
            components: {
                //子组件中默认无法访问父组件中的data上的数据和methods中的函数
                com1: {
                    /*
                    组件中的所有props数据都是通过父组件传递的
                    把父组件传递的属性定义好才能使用父组件传递参数
                    props中的数据都是只读的
                    */
                    props: [
                        'parentmsg'
                    ],
                    template: '<h1>子组件--{{parentmsg}}</h1>'
                }
            }
        })
    </script>

父组件传递函数到子组件

<div id="app">
        <!--父组件向子组件传递方法使用事件绑定机制-->
        <com2 @func="show"></com2>
    </div>
    <template id="temp1">
        <div>
            <h1>这是自组件</h1>
            <input type="button" value="点击" @click="myClick" />
        </div>
    </template>
    <script>
        let vm = new Vue({
            el: '#app',
            data: {},
            methods: {
                show(data) {
                    console.log(data)
                }
            },
            components: {
                com2: {
                    template: '#temp1',
                    data() {
                        return {
                            son: { name: '张三', age: 123 }
                        };
                    },
                    methods: {
                        myClick() {
                            console.log("ok")
                            //使用emit调用父组件传递函数,第一个参数是函数名称,后边参数为传递的参数
                            this.$emit('func', this.son)
                        }
                    }
                }
            }
        })

  

posted @ 2019-10-10 22:26  不骄不傲  阅读(2174)  评论(0编辑  收藏  举报