Vue slot插槽内容分发
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插槽内容分发的更多相关文章
- Vue slot插槽
插槽用于内容分发,存在于子组件之中. 插槽作用域 父级组件作用域为父级,子级组件作用域为子级,在哪定义的作用域就在哪. 子组件之间的内容是在父级作用域的,无法直接访问子组件里面的数据. 插槽元素 &l ...
- Vue slot插槽通俗解释
slot内容分发是Vue的Api来源 <div id="app"> <my-list> {{msg}} </my-list> </div& ...
- Vue slot 插槽用法:自定义列表组件
Vue 框架的插槽(slot)功能相对于常用的 v-for, v-if 等指令使用频率少得多,但在实现可复用的自定义组件时十分有用.例如,如果经常使用前端组件库的话,就会经常看到类似的用法: < ...
- vue slot 插槽详解
插槽含义:就是引入子组件后,在插入子组件元素中添加信息或者标签,使得子组件的指定位置插入信息或者标签 插槽有三种:默认插槽.具名插槽.作用域插槽,由于vue2.6.0后对插槽进行修改,但是兼容2.6. ...
- 组件(4):使用slot进行内容分发
组件的作用域(一) 父组件模板的内容在父组件作用域内编译:子组件模板的内容在子组件作用域内编译. 父子组件的编译相互独立,编译时只能使用各自作用域中的属性和方法,例如,你不可以在父组件模板内,将一个指 ...
- vue slot插槽的使用
slot插槽的使用场景 父组件向子组件传递dom时会用到插槽 作用域插槽:当同一个子组件想要在不同的父组件里展示不同的状态,可以使用作用域插槽.展示的状态由父组件来决定 注:想要修改父组件向子 ...
- vue slot插槽的使用方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue slot 插槽备忘
老是记不住插槽咋回事 记录下来备忘 父组件 <tab><template slot="boy" slot-scope="test">{{ ...
- vue slot插槽v-show不控制显示隐藏
vue中想控制插槽的显示隐藏,用v-show是不起任何作用的,改用v-if 可以生效.
随机推荐
- Linux中more和less命令用法
一.more命令 more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 ...
- MySQL中 and or 查询的优先级
这个可能是容易被忽略的问题,首选我们要清楚:MySQL中,AND的执行优先级高于OR.也就是说,在没有小括号()的限制下,总是优先执行AND语句,再执行OR语句.比如: select * from t ...
- Java集合类源码解析:ArrayList
目录 前言 源码解析 基本成员变量 添加元素 查询元素 修改元素 删除元素 为什么用 "transient" 修饰数组变量 总结 前言 今天学习一个Java集合类使用最多的类 Ar ...
- windows环境下手动安装Mysql8
1.下载zip包,解压到c:\java_env_mysql8下,并把c:\java_env_mysql8\bin放入到系统path变量中 2.编写my.ini文件,放置于 c:\java_env_my ...
- webstorm里用 DB browser 连接 mysql SQlite Oracle数据库
(1)插件名:DB browser preferences -> plugin -> 搜索 DB browser (2)在view里勾上 Tool Buttons,左侧会显示插件快捷入口 ...
- html的标签分类————可以上传的数据篇
html的标签可以分为: 块级标签:div(白板),H系列(加大加粗,H1—H7,字体一般逐渐变小,一般用作标题),p标签(段落之间有间距) 行内标签:span(白板) 此外,标签之间是可以嵌套的.为 ...
- angular懒加载
生成module和routing.module文件 {//路径 path: 'InfectionFillInComponent', loadChildren: './component/his/inf ...
- 虚拟主机、VPS主机与云服务器的区别
本文转载自星光云 http://www.365yun.top/news/list.asp?newsid=22 虚拟主机是利用虚拟技术将一台物理服务器划分成多个“虚拟”服务器,虚拟主机的出现大大节省了服 ...
- Windchill基本业务对象-文档
文档的类型: (1)WTDocumetManster :是文档的主要信息,一个文档只有一条记录:(2)WTDocument:是文档小版本记录,每一个文档小版本都有一条记录: 备注:(1)文档大版本记录 ...
- 配置ADB到Windows环境变量
adb 命令可以帮我们快速的管理连接的手机设备,例如执行一些安装apk,卸载apk命令,对于熟悉linux系统的人,可以方便的管理手机目录操作手机文件,还可以通过adb命令查看手机的系统日志等操作. ...