一、slot内容分发简介
slot的本意是位置、槽。slot的作用:获取组件中原有的内容,类似于angular中的transclude指令。
二、代码实现
1、slot简单用法(直接使用<slot></slot>)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>slot内容分发</title> 6 <!--引入vue--> 7 <script src="../js/vue.js"></script> 8 </head> 9 <body> 10 11 <div id="hello"> 12 <popo>我是组件popo中的原内容</popo> 13 </div> 14 15 <template id='tem'> 16 <div> 17 <h3>我是组件popo</h3> 18 <!-- 显示组件popo中的内容 --> 19 <slot>如果没有原内容,则显示该内容</slot> 20 </div> 21 </template> 22 23 24 <script> 25 //vue实例 26 let vm = new Vue({ //vm其实也是一个组件,是根组件Root 27 el:'#hello', 28 29 //自定义局部组件 30 components:{ 31 'popo':{ 32 template:'#tem' 33 } 34 } 35 }); 36 </script> 37 </body> 38 </html>
2、slot复杂用法(给原内容指定名字)
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>slot内容分发</title> 6 <!--引入vue--> 7 <script src="../js/vue.js"></script> 8 </head> 9 <body> 10 11 <div id="hello"> 12 <popo> 13 我是组件popo中的原内容 14 <ul slot='s1'> 15 <li>111</li> 16 <li>222</li> 17 <li>333</li> 18 </ul> 19 <ol slot='s2'> 20 <li>111</li> 21 <li>222</li> 22 <li>333</li> 23 </ol> 24 </popo> 25 </div> 26 27 <template id='tem'> 28 <div> 29 <slot name='s1'></slot> 30 <h3>我是组件popo</h3> 31 <!-- 显示组件popo中的内容 --> 32 <slot>如果没有原内容,则显示该内容</slot> 33 <slot name='s2'></slot> 34 </div> 35 </template> 36 37 38 <script> 39 //vue实例 40 let vm = new Vue({ //vm其实也是一个组件,是根组件Root 41 el:'#hello', 42 43 //自定义局部组件 44 components:{ 45 'popo':{ 46 template:'#tem' 47 } 48 } 49 }); 50 </script> 51 </body> 52 </html>