Vue_(组件通讯)使用solt分发内容

  Vue特殊特性slot  传送门

  有时候我们需要在自定义组件内书写一些内容,例如:

     <com-a>

      <h1>title</h1>

     </com-a>

   如果想获取上面代码片段中h1标签的内容该怎么办呢?Vue提供了一个极为方便的内置组件<slot>

  Learn

    一、使用solt分发内容

  目录结构

  

  【每个demo下方都存有html源码】

一、使用solt分发内容

  在<my-component-a>组件中添加<h1>、<ul>、<a>标签,并在<h1>标签中添加组件<slot="title">、在<ul>标签中添加组件<slot="ul">,在<a>标签中添加组件<solt="a">

    <body>
        <div id="GaryId">
            <my-component-a>
                <h1 slot="title">Gary大标题</h1>

                <ul slot="ulli">
                    <li>a</li>
                    <li>b</li>
                    <li>c</li>
                </ul>

                <a href="#" slot="a">传送门</a>
            </my-component-a>
        </div>
    </body>

  可以直接在<template>中设计标签布局顺序

    <template id="template-a">
        <div>

            <slot name="title">数据为空</slot>
            <h1>my-component-a</h1>

            <slot name="a">数据为空</slot>
            <slot name="ulli">数据为空</slot>
        </div>
    </template>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Gary</title>
    </head>
    <body>
        <div id="GaryId">
            <my-component-a>
                <h1 slot="title">Gary大标题</h1>

                <ul slot="ulli">
                    <li>a</li>
                    <li>b</li>
                    <li>c</li>
                </ul>

                <a href="#" slot="a">传送门</a>
            </my-component-a>
        </div>
    </body>

    <template id="template-a">
        <div>

            <slot name="a">数据为空</slot>

            <h1>my-component-a</h1>
            <slot name="ulli">数据为空</slot>
            <slot name="title">数据为空</slot>
        </div>
    </template>

    <script type="text/javascript" src="../js/vue.js" ></script>
    <script type="text/javascript">

        let comA = {
            template :  "#template-a"
        }

        new Vue({
            data : {

            },
            components : {
                "my-component-a" : comA
            }
        }).$mount("#GaryId");

    </script>
</html>

Gary_slot.html

原文地址:https://www.cnblogs.com/1138720556Gary/p/10549875.html

时间: 2024-08-28 17:56:25

Vue_(组件通讯)使用solt分发内容的相关文章

Vue_(组件通讯)组件

Vue组件 传送门 组件Component,可扩展HTML元素,封装可重用的代码.通俗的来说,组件将可重用的HTML元素封装成为标签方便复用: 组件的使用: 使用全局方法Vue.extend创建构造器: 再使用全局方法Vue.component注册组件: 在Vue.component里需要指明组件的名称,组件名称不能使用内置标签名称,如body 推荐使用短横线命名规则.例: my-component 正确 (推荐) my-Component 错误 mycomponent 正确 Mycompone

Vue_(组件通讯)简单使用父子组件

Vue组件 传送门 在Vue的组件内也可以定义组件,这种关系成为父子组件的关系 如果在一个Vue实例中定义了component-a,然后在component-a中定义了component-b,那他们的关系就是 Vue实例 -- 根组件 root component-a – 相对于root 这是子组件,相对于component-b这是 父组件 component-b -- 子组件 目录结构 简单的通过在父组件调用子组件,但父组件的值是无法直接传递给子组件 <!DOCTYPE html> <

Vue_(组件通讯)子组件向父组件传值

Vue组件 传送门 子组件向父组件传值:子组件通过$.emit()方法以事件形式向父组件发送消息传值: 使用步骤: 1.定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件: 2.准备获取数据:父组件com-a要获取子组件data中的height属性: 3.在子组件com-b中,需要用$.emit()方法将数据以事件的形式发送,$.emit('sendData', data, data…),红色的部分事件名可自定义,数据可传递多个: 4.在父组件中使用子组件的地方 <c

Vue_(组件通讯)父组件向子组件传值

Vue组件 传送门 父组件向子组件传值:父组件通过属性向下传值的方式和子组件通信: 使用步骤: 1.定义组件:现有自定义组件com-a.com-b,com-a是com-b的父组件 2.准备获取数据:com-b要获取父组件data中的name属性 3.在<com-b :name=“name”></com-b> 使用v-bind 绑定name属性,红色部分为属性名称,可以随意写 4.在子组件定义部分里添加选项,值是个字符串数组 props:[‘name’],将上边红色的属性名称写在这里

Vue_(组件通讯)非父子关系组件通信

Vue单项数据流 传送门 Vue中不同的组件,即使不存在父子关系也可以相互通信,我们称为非父子关系通信 我们需要借助一个空Vue实例,在不同的组件中,使用相同的Vue实例来发送/监听事件,达到数据通信的目的 Learn   一.单项数据流 目录结构 [每个demo下方都存有html源码] 一.单项数据流 定义组件A和组件B,组件A和组件B同级关系,当点击<template-a>的button控件时,调用sendData函数,将template-a中的data数据发向template-b <

使用slot分发内容

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

vue2.0 slot 分发内容

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

vue2.0中eventBus实现兄弟组件通讯

我们知道,在vue中父子组件的通讯是通过props和自定义事件搞定的,简单那的非父子组件通讯用bus(一个空的Vue实例),针对中大型的项目会选择vuex,然而小项目的话,便捷的解决方案就是eventBus. 官网相关描述在:$dispatch和$broadcast替换  一节中.提到: $dispatch 和 $broadcast 也没有解决兄弟组件间的通信问题.对于$dispatch 和 $broadcast最简单的升级方式就是:通过使用事件中心,允许组件自由交流,无论组件处于组件树的哪一层

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