vue中插槽(slot)的使用
刚学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)的使用的更多相关文章
- Vue中插槽slot的使用
插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个slot最核心的两个问题在这里就点出来了,是显示不显示和怎样显示. 由于插槽是一块模板,所 ...
- vue中的slot与slot-scope
深入理解vue中的slot与slot-scope vue+element-ui+slot-scope或原生实现可编辑表格 vue插槽详解
- Vue中插槽指令
08.29自我总结 Vue中插槽指令 意义 就是在组件里留着差值方便后续组件内容新增 而且由于插件是写在父级中数据可以直接父级中传输而不需要传子再传父有些情况会减少写代码量 示例 <div id ...
- vue中的slot理解和使用
最近被vue 搞得一塌糊涂,理解的比较慢,工作进度进度要求太快,需求理解不明,造成了很大的压力. 在理解Vue中的Slot的时候看了网上的相关内容,看了半天没看到明白说的是什么,然后自己就安装了vue ...
- Vue中的slot(占坑,预留位置)
Vue中的slot(占坑,预留位置) 子模板不使用slot 子模板使用slot 子模板使用使用name属性,且传递data 文件名:Slots.vue //slot组件 <template> ...
- vue 中的slot属性(插槽)的使用
总结如下: VUE中关于插槽的文档说明很短,语言又写的很凝练,再加上其和方法,数据,计算机等常用选项在使用频率,使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧,回头再学,反正已经 ...
- vue中的slot(插槽)
vue中的插槽----slot 什么是插槽? 插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性. ...
- Vue.js插槽slot和作用域插槽slot-scope学习小结
一般来说,在Vue项目中使用父子组建时,都是把通用的HTML结构提取出来写成一个子组件,需要动态展示的数据用过prop属性传递,不过有时候我们可能想给子组件传递一个HTML代码,这个时候用prop不太 ...
- 深入理解vue中的slot与slot-scope
from:https://segmentfault.com/a/1190000012996217?utm_source=tag-newest 写在前面 vue中关于插槽的文档说明很短,语言又写的很凝练 ...
- vue中插槽作用域的使用
一.插槽作用域 1.简单来说就是带参数的插槽: 2.使用方式: 在组件标签内部加一个template标签 在template标签上加一个属性scope 值随意书写 在组件内部用slot进行接受,如果给 ...
随机推荐
- BZOJ3879 SvT(后缀树+虚树)
对反串建SAM得到后缀树,两后缀的lcp就是其在后缀树上lca的len值,于是每次询问对后缀树建出虚树并统计答案即可. #include<iostream> #include<cst ...
- SQL查询oracle数据库最近备份情况
需求,查询RMAN备份情况,通过视图进行查询 SQL> //,) input_g, round(OUTPUT_BYTES///,) output_g order by ; SID OUTPUT_ ...
- 上传文件-layui+ashx
public void ProcessRequest (HttpContext context) { if (true) { context.Response.ContentType = " ...
- C# List<> Find相关接口学习
参考 http://blog.csdn.net/daigualu/article/details/54315564 示例: List<int> test = new List<int ...
- Java 之 泛型
一.泛型概述 集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成 Object 类型.当我们取出一个对象,并且进行相应的操作,这时必须采用类型转换. 先观察下面代码: publ ...
- Oracle学习笔记——imp还原数据库
1. 创建用户及指定用户名密码 create user [用户名] identified by [密码]; create user fskxjsxy identified by fskxjs ...
- hashCode 及hashcode与equals的区别
1.hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 详细了解请 参考 [1] public int hashCode()返回该对象的哈希码值.支持此方法是为了提高哈 ...
- man手册--iostat
iostat手册 IOSTAT(1) Linux User's Manual IOSTAT(1) NAME iostat - Report Central Processing Unit (CPU) ...
- Linux高级网络设置——给网卡绑定多个IP
假设这样一种场景: 某运营商的Linux服务器上装配了2家互联网公司的Web服务,每个Web服务分配了一个公网IP地址.但是运营商的Linux服务器只有一块网卡.这就需要在一块网卡上绑定多个IP地址. ...
- 用python文件操作实现复制图片、视频
图片复制 打开源图片: f_src = open('1.jpg','rb') 读取图片内容并存储到content变量 content = f_src.read() 打开复制后的图片,没有则创建 f_c ...