slot插槽(学习笔记)

slot插槽(有默认值,也有名称)一般情况下通过名称进行匹配
什么是插槽,有什么用?插槽相当于插入的一个东西,可以用来灵活的封装组件,比如说封装一个模态框
对组件进行内容的定制,slot插槽,一对组件标签中的结构,最终会被插入到组件的模板中去的
使用方法思路:子组件定义完成。需要灵活的改变子组件里面的东西。可以在子组件注册的标签里面写<slot></slot>来完成内容替换,当然有name来进行标识是最好的

 

案例:

  

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app">
    <modal>
        <h1 slot="title">{{title}}</h1>
        <div slot="content">
            <p>1</p>
            <p>2</p>
            <div>我是插件的内容部分</div>
        </div>
    </modal>
</div>
</body>
<script src="vue.js"></script>
<script>
/*
    对组件进行内容的定制
		slot插槽
        一对组件标签中的结构,最终会被插入到组件的模板中
*/

Vue.component('modal',{
    data(){
        return {
            title:"modal的标题"
        }
    },
    template:`
        <div class="box">
            <div class="title">
                <slot name="title"></slot>
            </div>
            <div class="content">
                <slot name="content"></slot>
            </div>
            <div class="footer">
                我是一个底部
            </div>
        </div>
    `
})

new Vue({
    el:"#app",
    data(){
        return {
            title:'父组件title插槽'
        }
    }
})
</script>

<style>
.box{
    font-size:14px;
    width: 400px;
    height: 260px;
    border:2px solid #F60;
    margin:0px auto;
}
.title{
    border-bottom:1px solid #999;
}
.content{
    border-bottom:1px solid #999;
}
</style>
</html>

  

posted @ 2018-03-26 22:51  First·林肯  阅读(866)  评论(0编辑  收藏  举报