vue组件

2018-07-02  本文已影响48人  阿昕_

组件

<tmp></tmp>

全局组件

Vue.component('tmp',{
    template:`<div @click='run'>{{str}}</div>`,
    data(){
        return {
            str:'这是一个组件'
        }
    },
    methods:{
        run(){
            console.log(1)
        }
    }
})

局部组件

new Vue({
    el:'#app',
    data:{
        msg:'hello'
    },
    components:{
        subtmp:{
            template:`<div @click='run'>{{str}}</div>`,
            data(){
                return {
                    str:'这是一个局部组件'
                }
            },
            methods:{
                run(){
                    console.log(2)
                }
            }
        }
    }
})

父==》子 自定义属性props信息传递

子==》父 自定义事件$emit()

props验证

props:{
    msg:{
        type:Number, //String,Number,Function,Object,Boolean,Array
        default:10,
        required:true,
        
        validator:(value)=>{
            return value>10;
        }
    }
}

slot分发

<a>
    <!-- 当写在自定义标签之间的内容 要混合子组件中的模板 -->
    <div slot="one">替换第1个</div>

    <div slot="three">替换第3个</div>
    
    <template slot="two">
        <div>替换第2个</div>
        <div>替换第2个</div>
        <div>替换第2个</div>
        <div>替换第2个</div>
        <div>替换第2个</div>
        <div>替换第2个</div>
    </template>

    <div>替换无名的slot</div>
    
</a>
 Vue.component("a",{
    template:`
        <div>
            <slot name="one"><p>这是第1个</p></slot>
            <slot name="two"><p>这是第2个</p></slot>
            <slot name="three"><p>这是第3个</p></slot>

            <slot>无名的slot</slot>    
            
        </div>
    `
})
上一篇 下一篇

猜你喜欢

热点阅读