详解Vue组件插槽的使用以及调用组件内的方法


Posted in Javascript onNovember 13, 2018

组件传参

通过给组件传递参数, 可以让组件变得更加可扩展, 组件内使用props接收参数

export default {
 props: ['options'],
 data(){
 return {}
 }
}

但是这个方法有局限性, 例如我写了一个对话框组件, 对话框的内容是自定义的
如果我只是显示文字的话, 我可以简单的将字符串传进去props: ['message']
但是如果需要在其中添加一个按钮的话, 这种方法就显得很笨重了, 所以我们用另一种办法 插槽

slot 插槽

slot的使用就像它的名字一样, 在组件内定义一块空间, 取名为slotA

<div class="dialog">
 我是对话框
 <slot name="slotA"></slot>
</div>

在组件外, 我们可以往插槽里填入任何元素, dialog-a为组件的名称

<dialog-a :options="hello">
 <template slot="slotA">
 <button>按钮</button>
 // ... 可以是任何元素
 </template>
</dialog-a>

slot-scope 获取插槽作用域

前面讲的只是实现往组件内加入元素, 但是并没有和组件的数据有任何的交互
slot-scope的作用就是把组件内的码农之家数据带出来

<div class="dialog">
 我是对话框<br>
 {{message}}
 <slot name="slotA" :message="message"></slot>
</div>

在组件外就可以得到其中的message

<dialog-a :options="hello">
 <template slot="slotA" slot-scope="scope">
 <button>{{scope.message}}</button>
 </template>
</dialog-a>

ref 调用组件内的方法

使用this.$refs找到组件后, 就可以调用其中methods中的方法

<dialog-a ref="dialogA"></dialog-a>
test(){
 this.$refs.dialogA.func()
}
Javascript 相关文章推荐
jquery实现checkbox全选全不选的简单实例
Dec 31 Javascript
javascript实现控制浏览器全屏
Mar 30 Javascript
js+html5实现canvas绘制圆形图案的方法
Jun 05 Javascript
实现音乐播放器的代码(html5+css3+jquery)
Aug 04 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
javascript 常用验证函数总结
Jun 28 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
Jan 11 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
vue+element-ui动态生成多级表头的方法
Aug 28 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
Oct 28 Javascript
react配置antd按需加载的使用
Feb 11 Javascript
Vue实现省市区三级联动
Dec 27 Vue.js
Vue实现一个无限加载列表功能
Nov 13 #Javascript
Vue实现移动端页面切换效果【推荐】
Nov 13 #Javascript
vue中slot(插槽)的介绍与使用
Nov 12 #Javascript
vuex的module模块用法示例
Nov 12 #Javascript
React手稿之 React-Saga的详解
Nov 12 #Javascript
基于游标的分页接口实现代码示例
Nov 12 #Javascript
React Hooks的深入理解与使用
Nov 12 #Javascript
You might like
PHP 数组遍历顺序理解
2009/09/09 PHP
Wordpress php 分页代码
2009/10/21 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
微信小程序 实现点击添加移除class
2017/06/12 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
Python简明入门教程
2015/08/04 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
Python实现把类当做字典来访问
2019/12/16 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
5款实用的python 工具推荐
2020/10/13 Python
python自动生成证件号的方法示例
2021/01/14 Python
Html5游戏开发之乒乓Ping Pong游戏示例(三)
2013/01/21 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸