Blogger Information
Blog 145
fans 7
comment 7
visits 164616
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Vue扩展知识:组件插槽、具名插槽和插槽作用域
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
Original
1091 people have browsed it

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属性来绑定插槽对象,就可以获得绑定在插槽对象上的数据
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post