博客列表 >Vue扩展知识:组件插槽、具名插槽和插槽作用域

Vue扩展知识:组件插槽、具名插槽和插槽作用域

李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰原创
2021年01月21日 17:20:401090浏览

1.代码练习

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Vue插槽</title>
  8. <script src="vue.js"></script>
  9. </head>
  10. <body>
  11. <div class="app">
  12. <child>
  13. <!-- 在使用子组件时(插槽也可以)可以直接使用父组件的数据 -->
  14. <div slot="one"><h1>{{name}}</h1></div>
  15. <!-- 子组件重定义插槽内容时可以使用子组件数据,需要子组件插槽定义时:帮数据绑定到插槽的自定义属性上;
  16. 在调用子组件插槽时,通过slot-scope属性来获取插槽对象,通过插槽对象上的定义的属性获取子组件数据 -->
  17. <div slot="two" slot-scope="slot">
  18. <ol>
  19. <li v-for="n of slot.data">{{n}}</li>
  20. </ol>
  21. </div>
  22. </child>
  23. <child></child>
  24. </div>
  25. <template id="child">
  26. <div>
  27. <slot name="one"><h1>插槽自定义内容</h1></slot>
  28. <slot name="two" :data="arr"><ul>
  29. <li v-for="n of arr">{{n}}</li>
  30. </ul></slot>
  31. </div>
  32. </template>
  33. </body>
  34. <script type="text/javascript">
  35. let child={
  36. // props:["name"],
  37. template:"#child",
  38. data(){
  39. return {
  40. arr:[1,2,3,4,5,6],
  41. }
  42. }
  43. }
  44. const vm=new Vue({
  45. data:{
  46. name:"ldy",
  47. },
  48. el:".app",
  49. components:{
  50. child,
  51. }
  52. });
  53. </script>
  54. </html>

代码运行结果

有关组件插槽的知识总结

1.在创建组件时,可以通过<slot></slot>标签创建插槽,插槽中可以填入默认数据信息;插槽可以通过name属性定义插槽的名字(具名插槽定义)。
2.在调用组件时,组件中自定义的标签内容,自动填充到组件插槽中的文职,如果没有自定义内容,则显示插槽中的默认数据信息;,在调用时通过自定义标签的slot属性来关联插槽(具名插槽的使用)
3.在调用组件时,插槽中自定义的html标签可以使用父组件中的数据
4.使用子组件时,插槽中自定义内容,可以使用子组件数据
5.插槽作用域:

  • 在定义插槽时,可以通过自定义属性绑定子组件数据:把子组件数据绑定到当前插槽对象上;
  • 在调用组件时,通过slot-scope属性来绑定插槽对象,就可以获得绑定在插槽对象上的数据
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议