使用slot-scope复制vue中slot内容
有时候我们的vue组件需要复制使用者传递的内容。
比如我们工程里面的轮播组件需要使用复制的slot来达到循环滚动的效果
使用者关注轮播内容的静态效果,组件负责让其滚动起来
组件:
<div class="horse-lamp">
<div class="lamp">
<slot name="lamps"></slot>
</div>
<div class="lamp">
<slot name="lamps"></slot>
</div>
</div>
使用者:
<CarouselWidget>
<div slot="lamps">123</div>
</CarouselWidget>
这种实现方式对于初始化的数据是没问题的,但是不支持slot内容的动态绑定,这是因为
- vnode在vue中是唯一的
- 一个vnode只会和一个dom节点绑定
因此当组件使用者在声明节点时,因为只声明了一个div,后台只生成了1个vnode,最终虽然产生了2个div,但是vnode只和后面1个dom绑定了,当vnode修改时也只会修改1个dom
解法:slot-scope
使用slot-scope数据产生的每个slot都会产生一个新的vnode
组件:
<div class="horse-lamp">
<div class="lamp">
<slot name="lamps" :arr="arr"></slot>
</div>
<div class="lamp">
<slot name="lamps" :arr="arr"></slot>
</div>
</div>
使用者:
<CarouselWidget :arr="info.column">
<template scope="slotProps" slot="lamps">
<component v-for="(item, index) in slotProps.arr"
:key="info.id"
:is="templates[item.type]"
:item="item"
></component>
</template>
</CarouselWidget>
这种情况下component内容有改动,那么组件内容2个slot都会同步更新
项目使用的vue版本是2.4.2,更高级的vue的slot-scope语法可能不太一样
原文地址:https://segmentfault.com/a/1190000016747615
使用slot-scope复制vue中slot内容的更多相关文章
- windows下cmd时复制dos中的内容 错误信息等
16:28 2015/11/23小发现 windows下cmd时复制dos中的内容,错误信息等:鼠标右键选择标记,然后ctrl c 即可.
- vue中slot插槽
插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口. 也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容 slot中可以设置一些默认的内 ...
- vue 中slot 的具体用法
子组件 <template> <div class="slotcontent"> <ul> <!--<slot></sl ...
- vue中slot组件的使用
插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性. Slot 是在组件模板中设置的用于在父组件中 ...
- 浅谈Vue中Slot以及slot-scope
vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项使用频率.使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧,回头再学 ...
- vue中slot的用法案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue中slot内容分发
<slot>元素是一个内容分发API,使用多个内容插槽时可指定name属性 <!DOCTYPE html> <html> <head> <meta ...
- vue中slot的笔记
一言以蔽之:本来写在子组件里边的内容默认是不显示的,如果想相对于子组件在哪里进行显示,则使用slot标签代表占位符,代替那部分内容,是行间元素还是块级元素取决于原先的那个标签. 参考的连接是:http ...
- 分享vue中 slot用法
//slot默认用法 //slot带参数name用法
随机推荐
- 爬虫(正则)——爬neihan8
工具:python3 步骤: 1)定义spider类,将具体功能封装成方法 2)观察html页面,写好正确的正则表达式来找到符合规则的文字 3)写一个方法测试一下,保证每写好一个都是对的 4)加入提示 ...
- 大都市 meg
Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了.不过,她经常回忆起以前在乡间漫步的情景. 昔日,乡下有依次编号为1.. ...
- 如何构建多模块的SpringBoot项目
通过阅读本文你将了解到:如何将已有SpringBoot项目改成多模块 & 如何新构建多模块SpringBoot项目 以下示例基于我正在使用的order(订单服务)进行演示,无论你用的是什么项目 ...
- 安卓下对SD卡文件的读写
为SD下的操作文件,封装了一些类: package ujs.javawritedata; import java.io.File; import java.io.FileInputStream; im ...
- 模态框的理解 ,jQ: loading,进度条, 省级联动 表单验证 插件
模态框: 打开一个弹框 不关闭它就不能做框外的操作 必须关闭或弹出另外的弹框 加载延迟loading + 进度条只要有请求 就处理一下监控ajax 全局事件jquery: $('#box').ajax ...
- Xiaocms 去版权
Xiaocms 去版权 后台去版权: 1. 登录页面 修改文件:\admin\template\login.tpl.php 代码: <td width="190" rows ...
- css3实现钟表效果
利用css3 transform属性刻画钟表的的刻度以及指针的角度,代码如下: <head> <meta charset="UTF-8"> <titl ...
- excel如何显示多个独立窗口
https://blog.csdn.net/tigaobansongjiahuan8/article/details/76861084
- Java中的多线程详解
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
- C-C++字符输出时遇到字符'\n','\0'区别
#include "iostream" #include "stdio.h" #include "stdio_ext.h" #include ...