首页 > 其他分享 >前端【VUE】08-vue【插槽】【默认插槽】【具名插槽】【作用域插槽】

前端【VUE】08-vue【插槽】【默认插槽】【具名插槽】【作用域插槽】

时间:2024-04-08 16:13:39浏览次数:15  
标签:VUE 20 dialog 作用域 插槽 color vue components

1、默认插槽

  默认插槽对应的插槽的名字为default

  

 

  

 1、组件目录下

components/MyDialog.vue

 1 <template>
 2   <div class="dialog">
 3     <div class="dialog-header">
 4       <h3>友情提示</h3>
 5       <span class="close">✖️</span>
 6     </div>
 7     <div class="dialog-content">
 8       <!-- 默认插槽, 没有指定名字的插槽 -->
 9       <slot></slot>
10     </div>
11     <div class="dialog-footer">
12       <button>取消</button>
13       <button>确认</button>
14     </div>
15   </div>
16 </template>
17 
18 <script>
19 export default {
20   data () {
21     return {}
22   }
23 }
24 </script>
25 
26 <style scoped>
27 * {
28   margin: 0;
29   padding: 0;
30 }
31 .dialog {
32   width: 470px;
33   height: 230px;
34   padding: 0 25px;
35   background-color: #ffffff;
36   margin: 40px;
37   border-radius: 5px;
38 }
39 .dialog-header {
40   height: 70px;
41   line-height: 70px;
42   font-size: 20px;
43   border-bottom: 1px solid #ccc;
44   position: relative;
45 }
46 .dialog-header .close {
47   position: absolute;
48   right: 0px;
49   top: 0px;
50   cursor: pointer;
51 }
52 .dialog-content {
53   height: 80px;
54   font-size: 18px;
55   padding: 15px 0;
56 }
57 .dialog-footer {
58   display: flex;
59   justify-content: flex-end;
60 }
61 .dialog-footer button {
62   width: 65px;
63   height: 35px;
64   background-color: #ffffff;
65   border: 1px solid #e1e3e9;
66   cursor: pointer;
67   outline: none;
68   margin-left: 10px;
69   border-radius: 3px;
70 }
71 .dialog-footer button:last-child {
72   background-color: #007acc;
73   color: #fff;
74 }
75 </style>

2、根组件App.vue中使用上面的组件

 1 <template>
 2   <div>
 3     <MyDialog>
 4       <!-- 给默认插槽设置内容 -->
 5       <!-- 1、可以是一段话 -->
 6       你让确认要退出本系统嘛?
 7       <!-- 2、也可以根据插槽的位置, 设置一段html代码 -->
 8     </MyDialog>
 9   </div>
10 </template>
11 
12 <script>
13 import MyDialog from './components/MyDialog.vue'
14 export default {
15   data () {
16     return {
17 
18     }
19   },
20   components: {
21     MyDialog
22   }
23 }
24 </script>
25 
26 <style>
27 body {
28   background-color: #b3b3b3;
29 }
30 </style>

2、插槽(默认值)-后备内容

  

 3、具名插槽

  具名插槽需要配合template标签来使用,如果是默认插槽,则可以不写template

  

具名插槽语法

  

 

具名插槽语法简化

  

4、作用域插槽 

  

 

  

1、组件components/MyTable.vue 

 1 <template>
 2   <div>
 3     <p>
 4       <!-- 定义插槽, 通过插槽给父组件传值, 这个值可以是双向绑定的变量 -->
 5       <!-- <slot username="张三" age="30"></slot> -->
 6       <slot :username="username" :age="age"></slot>
 7     </p>
 8   </div>
 9 </template>
10 
11 <script>
12 export default {
13   props: ['data'],
14   data() {
15     return {
16       username: "张三",
17       age: 20
18     }
19   }
20 }
21 </script>
22 <style scoped>
23 </style>

2、在根组件App.vue使用上面的组件

 1 <template>
 2   <div>
 3     <!-- 组件传值, 父传子, 通过属性传递, 定义属性名为data -->
 4     <!-- 子组件通过props接收 -->
 5     <MyTable :data="list">
 6       <!-- 通过插槽作用域给父传值, 插槽中定义的所有属性都会被包装成一个对象, 赋值给这个obj, 这个名字自定义-->
 7       <template #default="obj">
 8         我是内容 {{ obj.username  +  obj.age}}
 9       </template>
10 
11       <!-- 通过{username} 直接结构插槽传过来的对象中的username  -->
12       <!-- <template #default="{ username }">
13         我是内容 {{ username }}
14       </template> -->
15     </MyTable>
16   </div>
17 </template>
18 
19 <script>
20 import MyTable from './components/MyTable.vue'
21 export default {
22   data () {
23     return {
24       list: [
25         { id: 1, name: '张小花', age: 18 },
26         { id: 2, name: '孙大明', age: 19 },
27         { id: 3, name: '刘德忠', age: 17 }
28       ]
29     }
30   },
31   components: {
32     MyTable
33   }
34 }
35 </script>

 

标签:VUE,20,dialog,作用域,插槽,color,vue,components
From: https://www.cnblogs.com/wang1001/p/18121264

相关文章

  • 如何在vue工程中模块化使用大量的svg图片
    如果你在执行 requireAll(requireSvg) 后得到的是一个 BrowserSpriteSymbol 数组,并且能够直接使用 <use> 进行引用,这通常意味着在构建过程中有一些特定的Webpack配置和/或自定义加载器(loader)被用来处理SVG文件,并将它们转换为一个SVGSprite,其中每个SVG都转换为了一个......
  • vue快速入门(十二)v-key索引标志
    注释很详细,直接上代码新增内容v-key的使用场景数组筛选器的使用源码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">&......
  • 基于springboot+vue+Mysql的学习平台
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9系统展示平台首页用户注册课程信息作业信息资料信息个人中心管理员功能界面学生管理教师管理课程......
  • 基于Java+SpringBoot+Vue的SRM供应商系统(源码分享)
           前言:供应商招投标管理系统是一个综合性的管理平台,旨在规范供应商的招投标流程,确保采购过程的透明度和公正性,同时提高采购效率。以下是对您提到的各个环节的详细解释:一、供应商准入供应商准入是招投标管理系统的首要环节,它负责审核和管理潜在供应商的资质。具......
  • 常见原型设计工具介绍-00-overvuew
    拓展阅读常见免费开源绘图工具OmniGraffle创建精确、美观图形的工具UML-架构图入门介绍starUMLUML绘制工具starUML入门介绍PlantUML是绘制uml的一个开源项目UML等常见图绘制工具绘图工具draw.io/diagrams.net免费在线图表编辑器绘图工具excalidraw介绍绘......
  • 前端【VUE】07-vue【路由】
    一、路由单页应用程序:SPA-SinglePageApplication  VueRouter的介绍作用:修改地址栏路径时,切换显示匹配的组件说明:Vue官方的一个路由插件,是一个第三方包官网:https://v3.router.vuejs.org/zh/vue2对应 router3 vue3对应router4......
  • vue 下载图片
    <ahref="https://example.com/image.jpg"rel="externalnofollow"download>下载图片</a>//下载图片asyncdownloadImage(e){//获取图片对象和画布对象constimgUrl=https://example.com/image.jpgconstresponse=awaitfetc......
  • Vue3入门笔记【黑马】
    目录:认识Vue31.Vue3的优势使用create-vue搭建Vue3项目1.认识create-vue2.使用create-vue创建项目熟悉项目和关键文件组合式API-setup选项1.setup选项的写法和执行时机2.setup中写代码的特点3.setup语法糖组合式API-reactive和ref函数1.reactive2.ref3.re......
  • avue表格 超过个数不能勾选
    <avue-crudrow-key="id"reserve-selection@selection-change="selectionChange"></avue-crud>data(){return{maxSelectionCount:10,//设定最大勾选条数}},//选中的数据list是全部的数据,数组,//拿取数据的唯一id并赋值,批量删除使用selec......
  • 前端【VUE】06-vue【组件组成】【组件通信】【进阶语法】
    一、组件的三大组成部分(结构/样式/逻辑)组件的三大组成部分组件的样式冲突scoped1、components目录下components/BaseOne.vue1<template>2<divclass="base-one">3BaseOne4</div>5</template>67<script>8exportdefault{9......