详解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 防止表单重复提交代码
Jan 21 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
基于jquery的高性能td和input切换并可修改内容实现代码
Jan 09 Javascript
jQuery 过滤not()与filter()实例代码
May 10 Javascript
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
Jun 05 Javascript
JavaScript检测字符串中是否含有html标签实现方法
Jul 01 Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 Javascript
JS基于正则表达式实现的密码强度验证功能示例
Sep 21 Javascript
vue组件生命周期详解
Nov 07 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
Jun 05 Javascript
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中获取url与物理路径的总结
2013/06/21 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
Yii框架form表单用法实例
2014/12/04 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
js有关元素内容操作小结
2011/12/20 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python实现简易Web爬虫详解
2018/01/03 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
C++是不是类型安全的
2014/02/18 面试题
成语的广告词
2014/03/19 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
工作推荐信范文
2014/05/10 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
升学宴家长答谢词
2015/09/29 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers