详解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 相关文章推荐
JS中的substring和substr函数的区别说明
May 07 Javascript
Javascript基础教程之关键字和保留字汇总
Jan 18 Javascript
浅谈javascript的call()、apply()、bind()的用法
Feb 21 Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 Javascript
使用JQuery中的trim()方法去掉前后空格
Sep 16 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
微信小程序中form 表单提交和取值实例详解
Apr 20 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
js动态生成表格(节点操作)
Jan 12 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 header功能的使用
2013/10/28 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
JsChart组件使用详解
2018/03/04 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
微信小程序实现form表单本地储存数据
2019/06/27 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
学生自我鉴定范文
2013/10/04 职场文书
电子商务专业个人的自我评价
2013/11/19 职场文书
电子信息专业自荐书
2014/02/04 职场文书
初三学习决心书
2014/03/11 职场文书
事业单位考核材料
2014/05/21 职场文书
流动人口婚育证明
2014/10/19 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
琅琊山导游词
2015/02/05 职场文书
民事起诉状范文
2015/05/19 职场文书
老人与海读书笔记
2015/06/26 职场文书
学生会工作感言
2015/08/07 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
JavaScript分页组件使用方法详解
2021/07/26 Javascript
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS