刚学vue的时候,曾经学习过slot插槽的使用,但是后面接触的不多,因为之前我还没使用element-ui。。。

但是使用了element-ui之后,里面的许多组件,有时候会使用插槽,为了巩固一下插槽,写一个笔记

首先,插槽有什么作用呢?

我们先来自定义一个组件:

<template>
<div>
{{text}}
</div>
</template> <script>
export default {
data(){
return {
text:"自定义组件"
}
}
}
</script>

然后在其它组件内引入(script中)

import Lala from '@/components/lala.vue';

再声明一下

components:{
Lala
},

之后,在template中使用即可

<Lala></Lala>

这样,会在这个页面中显示“自定义组件”这些文字,代表组件成功引入。

但是当我们想在<Lala></Lala>标签中间添加其它内容时,它并不会显示在页面中

例如:

<Lala>我是在组件标签中写的内容</Lala>

我们发现,页面汇总并没有显示出我标签汇总写入的内容。而slot插槽可以让其显示,我们只需要在lala的组件模板中添加这样的代码

<template>
<div>
{{text}}
<slot></slot>
</div>
</template>

此时,标签内的内容就显示出来了,这就是slot插槽的作用,给组件添加自定义内容

以上这种插槽叫匿名插槽,也就是,你在自定义标签中写入的内容都用这个slot标签显示出来

那么相对的,还有具名插槽,顾名思义,就是有名字的插槽

首先在自定义组件模板中添加

<template>
<div>
{{text}}
<div>以下是匿名插槽</div>
<slot></slot>
<div>以下是具名插槽slot1</div>
<slot name="slot1"></slot>
<div>以下是具名插槽slot2</div>
<slot name="slot2"></slot>
</div>
</template>

以上是,在模板汇总加上了具名插槽,就是在slot标签上加个name属性,那么叫什么名,这个插槽就交什么名

在使用的页面内,这样写

<Lala>
<template>
我是在组件标签中写的内容
</template>
<template slot="slot1">slot1内容</template>
<template slot="slot2">slot2内容</template>
</Lala>

这样,就会显示出对应插槽模板中的内容,如果不传对应名字的插槽内容,就不显示,当然,如果像上面的代码一样,自定义组件即使用了匿名插槽,又使用了具名插槽,那么,除了具名插槽以外的模板,统统用匿名插槽显示,说到这,感觉这slot插槽就像个视口。当然一个模板中要不使用匿名插槽,要不具名插槽,最好不要匿名和具名都使用。

接下来介绍一下作用域插槽 !!!!

先看看怎么来定义作用域插槽

<template>
<div>
{{text}}
<div>以下是作用域插槽</div>
<slot say="你好"></slot>
</div>
</template>

就是在slot标签上自定义一个属性,我取名叫say,让后赋个值。(也可以:绑定该组件内data中的属性!!!)

下面看看在引用它的页面内如何使用

    <Lala>
<template slot-scope="a">
{{a}}
</template>
</Lala>

在template模板上加一个slot-scope属性 随便赋个值,这里叫a

在模板汇中就可以渲染这个值了

渲染出来是这样的

{ "say": "你好" }

好强大啊,这又是一种子组件向父组件传值的方式!!!!

它还可以和具名插槽配合使用!!!!!!!!!!!!!!!!!!!!!!!!!!!

自定义组件模板:

<template>
<div>
{{text}}
<div>以下是作用域插槽slot1</div>
<slot name="slot1" say="你好"></slot>
</div>
</template>

在引用的页面中

    <Lala>
<template slot="slot1" slot-scope="a">
{{a}}
</template>
</Lala>

真得劲!!!!!!!

还有呢!!!!!!!!!!结合props会更强大!!!!看代码:

我在引用它的页面内用props给它传个值,这个值是父组件内的值!!!

   <Lala :propObj="tableData">
<template slot="slot1" slot-scope="a">
{{a}}
</template>
</Lala>

在自定义组件内用props接收住,再传到父组件!!!

<template>
<div>
{{text}}
<div>以下是作用域插槽slot1</div>
<slot name="slot1" :say="propObj"></slot>
</div>
</template> <script>
export default {
props:['propObj'],//外部传值
}
</script>

这样将父组件中tableData的值渲染出来了哟!!,动态改变它的值也会变化哟!!

关键是,在子组件内动态改变它的值,父组件内也会动态改变!!!!!(这是父子组件通信的一个新模式啊!!!!)

vue中插槽(slot)的使用的更多相关文章

  1. Vue中插槽slot的使用

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个slot最核心的两个问题在这里就点出来了,是显示不显示和怎样显示. 由于插槽是一块模板,所 ...

  2. vue中的slot与slot-scope

    深入理解vue中的slot与slot-scope vue+element-ui+slot-scope或原生实现可编辑表格 vue插槽详解

  3. Vue中插槽指令

    08.29自我总结 Vue中插槽指令 意义 就是在组件里留着差值方便后续组件内容新增 而且由于插件是写在父级中数据可以直接父级中传输而不需要传子再传父有些情况会减少写代码量 示例 <div id ...

  4. vue中的slot理解和使用

    最近被vue 搞得一塌糊涂,理解的比较慢,工作进度进度要求太快,需求理解不明,造成了很大的压力. 在理解Vue中的Slot的时候看了网上的相关内容,看了半天没看到明白说的是什么,然后自己就安装了vue ...

  5. Vue中的slot(占坑,预留位置)

    Vue中的slot(占坑,预留位置) 子模板不使用slot 子模板使用slot 子模板使用使用name属性,且传递data 文件名:Slots.vue //slot组件 <template> ...

  6. vue 中的slot属性(插槽)的使用

    总结如下: VUE中关于插槽的文档说明很短,语言又写的很凝练,再加上其和方法,数据,计算机等常用选项在使用频率,使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧,回头再学,反正已经 ...

  7. vue中的slot(插槽)

    vue中的插槽----slot 什么是插槽? 插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性. ...

  8. Vue.js插槽slot和作用域插槽slot-scope学习小结

    一般来说,在Vue项目中使用父子组建时,都是把通用的HTML结构提取出来写成一个子组件,需要动态展示的数据用过prop属性传递,不过有时候我们可能想给子组件传递一个HTML代码,这个时候用prop不太 ...

  9. 深入理解vue中的slot与slot-scope

    from:https://segmentfault.com/a/1190000012996217?utm_source=tag-newest 写在前面 vue中关于插槽的文档说明很短,语言又写的很凝练 ...

  10. vue中插槽作用域的使用

    一.插槽作用域 1.简单来说就是带参数的插槽: 2.使用方式: 在组件标签内部加一个template标签 在template标签上加一个属性scope 值随意书写 在组件内部用slot进行接受,如果给 ...

随机推荐

  1. 2019牛客多校四 E. triples II (容斥)

    大意: 给定$n,a$, 求$n$个$3$的倍数, $or$和为$a$的方案数. 简单容斥题 可以求出$f_{x,y}$表示所有$3$的倍数中, 奇数位不超过$x$个$1$, 偶数位不超过$y$个$1 ...

  2. 多节点bigchaindb集群部署

    文章比较的长,安装下来大概4个小时左右,我个人使用的服务器,速度会快一点. 安装环境 ostname ip os node-admin 192.168.237.130 ubuntu 18.04.2 d ...

  3. 改善C#程序的方法

    写在开头: http://www.cnblogs.com/luminji    157个建议_勘误表 一:属性 属性和方法一样.也可以是virtual和abstract. 条款2:运行时常量(read ...

  4. vue中用div的contenteditable属性实现v-for遍历,双向数据绑定的动态表格编辑

    1.HTML部分 <tr v-for="(item,index) in customerVisitList2" :key="index"> < ...

  5. CA、证书及openssl用法

    CA和证书 摘要:涉及到网络安全这一块,想必大家都听过CA吧.像百度.淘宝.京东等这些知名网站,每年都要花费一笔money来买CA证书.但其实简单的企业内的CA认证,我们自己就可以实现,今天我就讲解一 ...

  6. Django drf:版本控制、django的缓存

    一.版本控制 二.django的缓存 一.版本控制 1.内置版本控制类 from rest_framework.versioning import QueryParameterVersioning,A ...

  7. Django hrf:权限、频率控制

    一.权限 二.频率控制 一.权限 1.权限介绍 只有超级用户才能访问指定的数据,所以就要用权限组件进行设置 2.局部使用 # 单独抽出写一个视图类 from rest_framework.permis ...

  8. Django drf:认证及组件、token、局部钩子源码分析

    一.drf认证功能 二.token讲解 三.局部钩子源码分析 一.drf认证功能 1.认证简介: 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录则不能查 ...

  9. markdown在typora的超方便的应用

    经常性需要进行文字的编写,但是使用word比较麻烦,而excel又不方便自己的工作实际实用,特此有一款软件支持我的应用,typora软件,让人使用的无法自拨. typora是基于markdown的来应 ...

  10. MOOC课程信息D3.js动态可视化

    版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/83153693 - 写在前面 好久没更新博客了,主要还是最近 ...