使用slot分发内容 作用域插槽

除非子组件模板包含至少一个<slot>插口,否则父组件的内容将会别丢弃。当子组件模板只有一个没有属性的slot时,父组件整个内容片断将插入到slot所在的DOM位置,并替换掉slot标签本身。

最初在 <slot> 标签中的任何内容都被视为备用内容。备用内容在子组件的作用域内编译,并且只有在宿主元素为空,且没有要插入的内容时才显示备用内容。

作用域插槽是一种特殊类型的插槽,用作使用一个(能够传递数据到)可重用模板替换已渲染元素。

在子组件中,只需将数据传递到插槽,就像你将 prop 传递给组件一样:

在父级中,具有特殊属性scope的<template>元素,表示它是作用域插槽的模板,scope的值对应一个临时变量名,此变量接受从子组件传递的prop对象

demo:

var app=new Vue({

  el:‘#app‘,

  components:{      

    ‘scope-component2‘:{
        template:‘<div><p>this is a child</p><slot text="this info from child"></slot></div>‘

    }

  }
});

html

<scope-component2>
      <template scope="props">
        <p>{{props.text}}</p>
       </template>
    </scope-component2>
时间: 2024-08-28 03:56:39

使用slot分发内容 作用域插槽的相关文章

使用slot分发内容

为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件的模板.这个过程被称为 内容分发 使用特殊的<slot>元素作为原始内容的插槽 除非子组件模板包含至少一个<slot>插口,否则父组件的内容将会被丢弃.当子组件只有一个没有属性的slot时,父组件整个内容片断将插入到slot所在DOM位置,并替换掉slot标签本身. 最初在<slot>标签中的任何内容都被视为 备用内容.备用内容在子组件的作用域内编译.并且只有在宿主元素为空,且没有要插入的内容时才显示备用内容

Vue.js-----轻量高效的MVVM框架(十一、使用slot分发内容)

#单个slot html: <h3>#单个slot</h3> <!-- 定义child01模板 --> <template id="child01"> <div>this is temp01 component!</div> <slot> 如果没有分发内容,这里将会被显示 </slot> </template> <div id="dr01"> &l

vue2.0 slot 分发内容

1.概述: 简单来说,假如父组件需要在子组件内放一些DOM,那么这些DOM是显示.不显示.在哪个地方显示.如何显示,就是slot分发负责的活. 2.默认情况下 父组件在子组件内套的内容,是不显示的. 代码: 效果图: 显示内容是一个button按钮,不包含span标签里面的内容: 3.单个slot 简单来说,只使用这个标签的话,可以将父组件放在子组件的内容,放到想让他显示的地方. 代码: 例如这样写的话,结果是: <button><span>12345</span>为了

vue 外卖app(3) 利用slot分发内容

1. 增加一个HeaderTop.vue <template> <header class="header"> <slot name="left"></slot> <span class="header_title"> <span class="header_title_text ellipsis">{{title}}</span> </

436 vue slot:插槽基本使用,具名插槽,作用域插槽

1. 插槽 : 替换内容 / 分发内容 (1)占位,像出口<router-view></router-view>. (2)没有新的内容放进来,就用默认的. (3)<slot></slot>将被替换成组件内的对应子节点. 2. 基本使用 <el-car> <div>宝马发动机</div> </el-car> 组件的内部 02-插槽的基本使用.html <!DOCTYPE html> <html

新版本的作用域插槽以及旧版本的slot

新版本的作用域插槽以及旧版本的slot 1.作用/概念:预先将使用的内容进行保留 我的理解就是父页面在组件标签内插入任意内容,子组件内插糟slot控制摆放位置(匿名插槽,具名插槽) 案例: <body> <div id='app'> <Hello> <div> 这里是插入的内容 //这一部分的内容并不会被输出(原因是被组件覆盖掉了) </div> </Hello> </div> <template id="

组件(4):使用slot进行内容分发

组件的作用域(一) 父组件模板的内容在父组件作用域内编译:子组件模板的内容在子组件作用域内编译. 父子组件的编译相互独立,编译时只能使用各自作用域中的属性和方法,例如,你不可以在父组件模板内,将一个指令绑定到子组件的属性或方法上.如果这么做控制台会报一个属性未定义的错误. 如果想要绑定一个指令以便控制子组件的行为,那么你可以在子组件的模板内,将一个指令绑定到子组件的属性或方法上:或者在父组件的模板内,将指令绑定到父组件的属性或方法上. new Vue({ el: '#app-2', data:

作用域插槽 向父组件传递 &lt;template slot-scope=&quot;{ row, index }&quot; slot=&quot;dateNo&quot;&gt;

作用域插槽 向父组件传递 <template slot-scope="{ row, index }"  slot="dateNo"> slotTest1 <slot name="action" :kk="kk"></slot> slotTest2 <!-- * @description text !--> <template> <div> <slot

Vue组件之作用域插槽

写作用域插槽之前,先介绍一下Vue中的slot内容分发: 如果<child-component></child-component>标签之间没有插入那两个p标签的话,页面会显示子组件模板中定义的"<p>父组件如果没有插入内容,我将被显示</p>"这一则内容,但如果<child-component></child-component>标签之间有插入内容的话,则子组件模板中的<slot></slot&