详解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的将桌面应用程序引入浏览器
Nov 19 Javascript
JS trim去空格的最佳实践
Oct 30 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
Aug 18 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
Nov 23 Javascript
js自定义Tab选项卡效果
Jun 05 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
Sep 07 Javascript
JavaScript中立即执行函数实例详解
Nov 04 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
Jul 11 Javascript
js实现图片3D轮播效果
Sep 21 Javascript
vue组件库的在线主题编辑器的实现思路
Apr 03 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
May 14 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
探讨如何把session存入数据库
2013/06/07 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
Knockoutjs快速入门(经典)
2012/12/24 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
node.js中的fs.statSync方法使用说明
2014/12/16 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
js兼容pc端浏览器并有多种弹出小提示的手机端浮层控件实例
2015/04/29 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
详解python之简单主机批量管理工具
2017/01/27 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
PyTorch预训练的实现
2019/09/18 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
浅析python 字典嵌套
2020/09/29 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
英国精品买手店:Browns Fashion
2016/09/29 全球购物
Python面试题集
2012/03/08 面试题
J2EE中的容器都包括哪些
2013/08/21 面试题
争当四好少年演讲稿
2014/09/13 职场文书
2014年班组长工作总结
2014/11/20 职场文书
调任通知
2015/04/21 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
LeetCode189轮转数组python示例
2022/08/05 Python