有时候我们的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内容的更多相关文章

  1. windows下cmd时复制dos中的内容 错误信息等

    16:28 2015/11/23小发现 windows下cmd时复制dos中的内容,错误信息等:鼠标右键选择标记,然后ctrl c 即可.

  2. vue中slot插槽

    插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口. 也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容 slot中可以设置一些默认的内 ...

  3. vue 中slot 的具体用法

    子组件 <template> <div class="slotcontent"> <ul> <!--<slot></sl ...

  4. vue中slot组件的使用

    插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性. Slot 是在组件模板中设置的用于在父组件中 ...

  5. 浅谈Vue中Slot以及slot-scope

    vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项使用频率.使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧,回头再学 ...

  6. vue中slot的用法案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Vue中slot内容分发

    <slot>元素是一个内容分发API,使用多个内容插槽时可指定name属性 <!DOCTYPE html> <html> <head> <meta ...

  8. vue中slot的笔记

    一言以蔽之:本来写在子组件里边的内容默认是不显示的,如果想相对于子组件在哪里进行显示,则使用slot标签代表占位符,代替那部分内容,是行间元素还是块级元素取决于原先的那个标签. 参考的连接是:http ...

  9. 分享vue中 slot用法

    //slot默认用法 //slot带参数name用法

随机推荐

  1. 爬虫(正则)——爬neihan8

    工具:python3 步骤: 1)定义spider类,将具体功能封装成方法 2)观察html页面,写好正确的正则表达式来找到符合规则的文字 3)写一个方法测试一下,保证每写好一个都是对的 4)加入提示 ...

  2. 大都市 meg

    Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了.不过,她经常回忆起以前在乡间漫步的情景. 昔日,乡下有依次编号为1.. ...

  3. 如何构建多模块的SpringBoot项目

    通过阅读本文你将了解到:如何将已有SpringBoot项目改成多模块 & 如何新构建多模块SpringBoot项目 以下示例基于我正在使用的order(订单服务)进行演示,无论你用的是什么项目 ...

  4. 安卓下对SD卡文件的读写

    为SD下的操作文件,封装了一些类: package ujs.javawritedata; import java.io.File; import java.io.FileInputStream; im ...

  5. 模态框的理解 ,jQ: loading,进度条, 省级联动 表单验证 插件

    模态框: 打开一个弹框 不关闭它就不能做框外的操作 必须关闭或弹出另外的弹框 加载延迟loading + 进度条只要有请求 就处理一下监控ajax 全局事件jquery: $('#box').ajax ...

  6. Xiaocms 去版权

    Xiaocms 去版权 后台去版权: 1.  登录页面 修改文件:\admin\template\login.tpl.php 代码: <td width="190" rows ...

  7. css3实现钟表效果

    利用css3 transform属性刻画钟表的的刻度以及指针的角度,代码如下: <head> <meta charset="UTF-8"> <titl ...

  8. excel如何显示多个独立窗口

    https://blog.csdn.net/tigaobansongjiahuan8/article/details/76861084

  9. Java中的多线程详解

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

  10. C-C++字符输出时遇到字符'\n','\0'区别

    #include "iostream" #include "stdio.h" #include "stdio_ext.h" #include ...