以下是学习笔记:
1.前面学习的默认插槽可以理解为一个默认的坑,没有任何表示,html代码可以往里面"填坑"
2.具名插槽拥有了name属性,它成为该坑的表示,当往组件里面写得html标签带上slot="具名插槽名"时,这些html代码将有方向性地"填坑"到具有表示name的插槽中.可以说,name属性给不同插槽以标识符
3.作用域插槽,当插槽拥有了一些属性,而填入坑中的标签想要使用时.可以给这些标签加上slot-scope属性,并将该属性值存放到一个对象obj中,这样可以在标签中以`{{obj.属性名}}`的方式访问到插槽具有的属性(目前还未学习到具体使用场景)
具名插槽:
<div id="app"> <!-- 1.2 想要指定插入指定位置,就得指定一下插入到slot的名字,通过slot属性来指定, 这个slot的值必须和下面slot组件得name值对应上 --> <index> <h1 slot="header">头部</h1> <p slot="footer">底部</p> </index> </div> <script> // 1.1. 通过给slot添加name属性,来指定当前slot的名字 Vue.component('index', { template: ` <div> <slot name="header"></slot> index <slot name="footer"></slot> </div>
` })
...
</script>
作用域插槽:
<div id="app"> <!-- --> <index> <!-- 1.2 给这里需要取出slot中属性值得标签(也就是p)定义一个属性:slot-scope,它的值是一个对象,这个对象中保存的有下面slot中所有得属性 --> <p slot-scope="obj">{{obj.company}}版权所有{{obj.title}}</p> </index> </div> <script> // 1.1 现在slot组件携带了属性,想把他们取出来怎么办?需要用到作用域插槽 Vue.component('index', { template: ` <div> index <slot title="vue学习" company="itcast" $index="111"></slot> </div> ` }) var vm = new Vue({ el: '#app', data: { } }) </script>