slot插槽使用

使用场景,一般父组件中又一大段模板内容需要运用到子组件上。或者更加复杂的,子组件需要运用到父组件大段模板内容,而子组件却不知道挂载的内容是什么。挂载点的内容是由父组件来决定的。

Slot的通俗理解

slot是“占坑”,在组件模板中占好了位置,当使用该组件标签时候,组件标签里面的内容就会自动填坑(替换组件模板中<slot>位置),当插槽也就是坑<slot name=”mySlot”>有命名时,组件标签中使用属性slot=”mySlot”的元素就会替换该对应位置内容;

// 父组件
<template>
<div id="app">
<div>头部</div>
<div>
<v-childe>
<!-- 模板内容 -->
<div>来自父组件模板内容</div>
<div>这里的模板内容将会替换到子组件slot位置上</div>
<div>{{message}}</div>
<!-- 模板内容 -->
</v-childe>
</div>
<div>底部</div>
</div>
</template>
<script>
import Childe from './components/childe.vue'
export default {
components:{
'v-childe':Childe
},
data(){
return{
message:'动态数据' //message的数据根据父组件来决定
}
}
}
</script>

注意:slot分发的内容,作用域在父组件上

//子组件
<template>
<div>
<div>子组件头部</div>
<slot>
<!-- 默认内容 -->
<div>当父组件没有定义slot内容时,会默认显示</div>
<!-- 默认内容 -->
</slot>
<div>子组件底部</div>
</div>
</template>

注意:子组件内<slot>内的备用内容,他的作用域是子组件本身。

父组件的内容将会替换到子组件的slot位置上,因为没有指定名字,所以子组件无论添加多少个<slot></slot> 都是同样的内容。

显示结果

//当父组件使用了slot时 (即<v-child> .... </v-chiild>里面有内容)
头部
子组件头部
来自父组件模板内容
这里的模板内容将会替换到子组件slot位置上
动态数据
子组件底部
底部
//当父组件没有使用slot时 (即<v-child></v-child>为空标签)
头部
子组件头部
当父组件没有定义slot内容时,会默认显示
子组件底部
底部

具名slot

为slot加上名字能分发更多内容

// 父组件
<template>
<div id="app">
<div>头部</div>
<div>
<v-childe>
<!-- 模板内容 -->
<div slot="top">
<div>父组件插入名为top的slot内容</div>
</div>
<div slot="bottom">
<div>父组件插入名为bottom的slot内容</div>
</div>
     <div>动态数据</div> //注意这里父组件没有使用slot的name特性,他将作为默认slot显示
<!-- 模板内容 -->
</v-childe>
</div>
<div>底部</div>
</div>
</template>
//子组件
<template>
<div>
<div>子组件头部</div>
<slot name="top">
<!-- 默认内容 -->
<div>当父组件没有定义slot内容时,会默认显示</div>
<!-- 默认内容 -->
</slot>
<div>子组件底部</div>
</div>
</template>

当父组件和子组件的slot名子一致的时候,才会显示父组件插入的内容。而名字不一致的内容则会抛弃

访问slot

在组件内,可通过 this.$slot.default  访问默认插入内容

     可通   this.$slot.+name 例如this.$slot.top  访问具名slot插入的内容

Vue slot插槽内容分发的更多相关文章

  1. Vue slot插槽

    插槽用于内容分发,存在于子组件之中. 插槽作用域 父级组件作用域为父级,子级组件作用域为子级,在哪定义的作用域就在哪. 子组件之间的内容是在父级作用域的,无法直接访问子组件里面的数据. 插槽元素 &l ...

  2. Vue slot插槽通俗解释

    slot内容分发是Vue的Api来源 <div id="app"> <my-list> {{msg}} </my-list> </div& ...

  3. Vue slot 插槽用法:自定义列表组件

    Vue 框架的插槽(slot)功能相对于常用的 v-for, v-if 等指令使用频率少得多,但在实现可复用的自定义组件时十分有用.例如,如果经常使用前端组件库的话,就会经常看到类似的用法: < ...

  4. vue slot 插槽详解

    插槽含义:就是引入子组件后,在插入子组件元素中添加信息或者标签,使得子组件的指定位置插入信息或者标签 插槽有三种:默认插槽.具名插槽.作用域插槽,由于vue2.6.0后对插槽进行修改,但是兼容2.6. ...

  5. 组件(4):使用slot进行内容分发

    组件的作用域(一) 父组件模板的内容在父组件作用域内编译:子组件模板的内容在子组件作用域内编译. 父子组件的编译相互独立,编译时只能使用各自作用域中的属性和方法,例如,你不可以在父组件模板内,将一个指 ...

  6. vue slot插槽的使用

    slot插槽的使用场景 父组件向子组件传递dom时会用到插槽   作用域插槽:当同一个子组件想要在不同的父组件里展示不同的状态,可以使用作用域插槽.展示的状态由父组件来决定   注:想要修改父组件向子 ...

  7. vue slot插槽的使用方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. vue slot 插槽备忘

    老是记不住插槽咋回事 记录下来备忘 父组件 <tab><template slot="boy" slot-scope="test">{{ ...

  9. vue slot插槽v-show不控制显示隐藏

    vue中想控制插槽的显示隐藏,用v-show是不起任何作用的,改用v-if 可以生效.

随机推荐

  1. 【野草】SQL Server之索引解析(二)

    1.堆表 堆表通过IAM连接一起,查询时全表扫描. 1.1 非聚集索引 结构 叶子节点数据结构:行数据结构+Rid(8字节) 中间节点数据结构: (非聚集非唯一索引)行数据结构+Page(4)+2+ ...

  2. [VsCode] 开发所使用的VsCode的插件

    vscode 的插件 必须 Chinese (Simplified) Language Pack for Visual Studio Code Markdown Preview Enhanced De ...

  3. Python并发编程之实战异步IO框架:asyncio 下篇(十一)

    大家好,并发编程 进入第十一章. 前面两节,我们讲了协程中的单任务和多任务 这节我们将通过一个小实战,来对这些内容进行巩固. 在实战中,将会用到以下知识点: 多线程的基本使用 Queue消息队列的使用 ...

  4. .Net Core 实践 - 使用log4net记录日志(2)

    实现目标:将log4net的相关操作封装成一个 .Net Standard类库 demo地址:https://github.com/PuzzledAlien/log4net_demo/tree/mas ...

  5. 改善 C# 的语言习惯(一) - 使用属性而不是可访问的数据成员(整理中)

    改善 C# 的语言习惯(一) - 使用属性而不是可访问的数据成员 序 为什么我们的程序运行得棒棒的,还要改呢?Why? 答:我们要让程序运行得更快,执行的效率更高,代码的可读性更强,维护的成本更低.. ...

  6. Java开发笔记(十七)各得其所的多路分支

    前面提到条件语句的标准格式为“if (条件) { /* 条件成立时的操作代码 */ } else { /* 条件不成立时的操作代码 */ }”,乍看之下仿佛只有两个分支,一个是条件成立时的分支,另一个 ...

  7. Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)

    上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页  了解了LigerUI 中Grid的基本用法  现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...

  8. js 浏览器兼容css中webkit、Moz、O、ms...写法封装(es6语法)

    /** *浏览器兼容写法封装 */ let elementStyle = document.createElement('div').style let vendor = (() => { le ...

  9. SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证?

    SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证? 1, MI01 create a physical inventory document, 2, MI04 to inpu ...

  10. 惊喜,重磅福利!免费开源ERP-企业信息化金矿

    Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适用于各种规模的企 ...