详解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 相关文章推荐
javascript 鼠标拖动图标技术
Feb 07 Javascript
js 返回时间戳所对应的具体时间
Jul 20 Javascript
js创建数据共享接口——简化框架之间相互传值
Oct 23 Javascript
JQuery each()嵌套使用小结
Apr 18 Javascript
JS拖拽插件实现步骤
Aug 03 Javascript
Javascript页面跳转常见实现方式汇总
Nov 28 Javascript
js中toString()和String()区别详解
Mar 23 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
带你快速理解javascript中的事件模型
Aug 14 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
微信小程序实现同时上传多张图片
Feb 03 Javascript
ReactRouter的实现方法
Jan 25 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
输出控制类
2006/10/09 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
2013/05/07 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
Python模块结构与布局操作方法实例分析
2017/07/24 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
使用Python写一个小游戏
2018/04/02 Python
对Python w和w+权限的区别详解
2019/01/23 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
详细分析Python垃圾回收机制
2020/07/01 Python
python与idea的集成的实现
2020/11/20 Python
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
美国网上花店:JustFlowers
2017/02/12 全球购物
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
集体备课反思
2014/02/12 职场文书
公务员政审个人总结
2015/02/12 职场文书
保留意见审计报告
2015/06/05 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技