详解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 iframe内部出滚动条
Feb 11 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
Aug 12 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
js判断数组key是否存在(不用循环)的简单实例
Aug 03 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 Javascript
AngularJs实现聊天列表实时刷新功能
Jun 15 Javascript
vue中轮训器的使用
Jan 27 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
Sep 10 Javascript
vue style width a href动态拼接问题的解决
Aug 07 Javascript
vue界面发送表情的实现代码
Sep 11 Javascript
jQuery实现移动端扭蛋机抽奖
Nov 08 jQuery
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实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
js断点调试经验分享
2017/12/08 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
python实现的防DDoS脚本
2011/02/08 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
使用matplotlib画散点图的方法
2018/05/25 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
Python计算IV值的示例讲解
2020/02/28 Python
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
出生公证委托书
2014/04/03 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
机械生产实习心得体会
2016/01/22 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android