vue中的插槽

  在vue中,有的名词听着高大上,挺怪异的,比如插槽,就是slot,它的作用是为了解决组件之间写的内容在组件中的使用问题。

  一、插槽的作用

<!DOCTYPE html>
<html>
<head>
  <title>Vue中的插槽</title>
  <script src="vue.js"></script>
</head>
<body>
    <div id="app">
          <mycard>111</mycard>          
          <mycard>222</mycard>          
          <mycard></mycard>          
    </div>
  <!-- 组件 AddPerson -->
    <template id="infoCard">
        <div>
            <slot>这是默认信息</slot>
        </div>
    </template>
    <script>
        Vue.component('mycard', { template: '#infoCard' });
        new Vue({ el: '#app'});
  </script>
</body>
</html>

  显示结果:

  可以看出,在组件的模板定义中使用<slot></slot>就可以使用该组件在父项中定义的内容,如果没有定义,那么就使用slot默认的定义。

  二、插槽的具名使用

  为了更灵活、更丰富地使用该组件使用时的定义信息,vue定义了具名插槽。

<!DOCTYPE html>
<html>
<head>
  <title>Vue的插槽</title>
  <script src="vue.js"></script>
</head>
<body>
    <div id="app">
          <mycard  style="background-color: aquamarine;">
                <header>头部1</header>
                    11111
                <footer>底部1</footer>
          </mycard>          
          <mycard  style="background-color: rgb(160, 177, 65);">
                <header>头部2</header>
                     22222
          </mycard>
          <mycard style="background-color: rgb(102, 87, 235);">
                      33333 
                <footer>底部3</footer>
          </mycard>          
          <mycard style="background-color: rgb(238, 105, 209);">44444</mycard>          
          <mycard style="background-color: rgb(240, 180, 130);"></mycard>          
    </div>
    <template id="infoCard">
        <div>
          <slot #header></slot>
          这是信息内容:{{info}}
          <slot name="footer"></slot>
        </div>
    </template>
    <script>
        Vue.component('mycard', {
          data(){
              return {  info:"Infomation"  }
          },
          template: '#infoCard',
          methods: {
          },
          props: ['infos']
        });
        new Vue({ el: '#app'});
  </script>
</body>
</html>

  显示结果:

  注意:
    1、如果”这是信息内容:{{info}}“放在最顶端,那么该内容就出现在顶端,否则是出现在底端;
    2、具名插槽就是slot的使用根据名称对应;
    3、如果定义了slot,那么只要组件使用时定义了内容那么该内容就会出现在组件中;
    4、如果组件使用时没有定义了内容,那么具名插槽就不起作用。
  三、插槽的传值

<!DOCTYPE html>
<html>
<head>
  <title>Vue的插槽</title>
  <script src="vue.js"></script>
</head>
<body>
    <div id="app">
          <mycard  :infos="message" v-slot:default="myprops">
                {{myprops.mynews.title}}
                <br>
                {{myprops.mynews.content}}
          </mycard>          
          <p>---分割线---</p>
          <mycard  :infos="message" v-slot:default="myprops">
          </mycard>          
    </div>
    <template id="infoCard">
        <div>
          <span>{{infos.title}}</span>
          <br>
          <slot :mynews="news">{{news.title}}--{{news.content}}</slot>
        </div>
    </template>
    <script>
        Vue.component('mycard', {
          data(){
              return {  news:{
                  title:"组件内部的新闻标题",
                  content:"组件内部的新闻内容"
              }  }
          },
          template: '#infoCard',
          props: ['infos']
        });
        new Vue({
             el: '#app',
            data:{
              message:{
                title:'父项的标题'
              }
            }
      });
  </script>
</body>
</html>

  显示结果:

  注意:
    1、如果在插槽中定义了绑定,那么使用组件中必须定义内容,否则报错;
    2、在插槽中定义绑定是为了父项使用该组件时在内容中引用该组件的参数;
    3、如果在父项使用该组件时没有定义内容那么模板中放置的内容才起作用;
    4、这个定义与使用有点绕,看下面的图示就比较清楚了。

  在模板中使用mynews与组件内定义的news关联也就是绑定,在使用该组件时缺省定义了myprops,这相当于入口地址或者参数传入的顶部对象,也可以理解为一个容器,传进来的对象放置在这个容器当中,接下来就可以通过对象引用的方式使用组件内部定义的参数了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/339059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nginx虚拟主机

虚拟主机指的就是一个独立的站点配置&#xff0c;是nginx默认支持的一个功能&#xff0c;它能够有自己独立的域名&#xff0c;独立的ip&#xff0c;独立的端口配置&#xff0c;能够配置完整的www服务&#xff0c;列如网站搭建&#xff0c;邮件服务器代理等等。并且nginx支持多虚…

Macos数据库管理软件:Navicat Premium for Mac 16.3.5中文版

Navicat Premium 16 for Mac是一款强大的数据库管理和开发工具&#xff0c;支持多种数据库系统&#xff0c;如MySQL、Oracle、SQL Server等。它提供了直观的用户界面和丰富的功能&#xff0c;使用户能够轻松地创建、管理和维护数据库。 软件下载&#xff1a;Navicat Premium fo…

【书生·浦语大模型实战营05】《(5)LMDeploy 大模型量化部署实践》学习笔记

《(5)LMDeploy 大模型量化部署实践》 课程文档&#xff1a;《LMDeploy 的量化和部署》 1、大模型部署背景 1.1 模型部署 定义 将训练好的模型在特定软硬件环境中启动的过程&#xff0c;使模型能够接收输入并返回预测结果为了满足性能和效率的需求&#xff0c;常常需要对模型…

web架构师编辑器内容-完成属性设置的优化

对于业务组件来说&#xff0c;其属性是有很多的&#xff0c;如果把所有属性都平铺在页面上&#xff0c;就会非常长&#xff0c;而且想要更改其中的某些属性&#xff0c;可能需要向下滚动很久才能找到&#xff0c;对于UI的交互不是很友好&#xff0c;需要对属性的不同特性进行分…

OpenCompass 大模型评测

OpenCompass 大模型评测 关于测评的三个问题为什么需要测评&#xff1f;我们需要评测什么&#xff1f;怎么测试大预言模型&#xff1f; 主流大模型评测框架OpenCompass能力框架OpenCompass评测流水线设计 随着人工智能技术的快速发展&#xff0c; 大规模预训练自然语言模型成为…

线程同步--生产者消费者模型--单例模式线程池

文章目录 一.条件变量pthread线程库提供的条件变量操作 二.生产者消费者模型生产者消费者模型的高效性基于环形队列实现生产者消费者模型中的数据容器基于生产者消费者模型实现单例线程池 一.条件变量 条件变量是线程间共享的全局变量,线程间可以通过条件变量进行同步控制条件…

Springboot JSP项目如何以war、jar方式运行

文章目录 一&#xff0c;序二&#xff0c;样例代码1&#xff0c;代码结构2&#xff0c;完整代码备份 三&#xff0c;准备工作1. pom.xml 引入组件2. application.yml 指定jsp配置 四&#xff0c;war方式运行1. 修改pom.xml文件2. mvn执行打包 五&#xff0c;jar方式运行1. 修改…

表白墙网站PHP源码,支持封装成APP

源码介绍 PHP表白墙网站源码&#xff0c;适用于校园内或校区间使用&#xff0c;同时支持封装成APP。告别使用QQ空间的表白墙。 简单安装&#xff0c;只需PHP版本5.6以上即可。 通过上传程序进行安装&#xff0c;并设置账号密码&#xff0c;登录后台后切换模板&#xff0c;适配…

HCIA——21C/S、P2P、peer的选择

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

Java面试题50道

文章目录 1.谈谈你对Spring的理解2.Spring的常用注解有哪些3.Spring中的bean线程安全吗4.Spring中的设计模式有哪些5.Spring事务传播行为有几种6.Spring是怎么解决循环依赖的7.SpringBoot自动配置原理8.SpringBoot配置文件类型以及加载顺序9.SpringCloud的常用组件有哪些10.说一…

Debian11下编译ADAravis和Motor模块的一条龙过程

Debian11编译EPICS ADAravis记录 一年前整理的上面文&#xff0c;这几天重新走了一遍&#xff0c;有些地方会碰到问题&#xff0c;需要补充些环节&#xff0c;motor模块以前和areaDetector一条龙编译时&#xff0c;总是有问题&#xff0c;当时就没尝试了&#xff0c;这几天尝试…

C#串口通讯控制4路继电上位机

C#串口通讯控制4路继电上位机 界面如下 源码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;//引入空间 using System.Windows.Forms; using System.I…

通过Stable Diffusion生成虚假的遥感影像

简介 这两天玩了一下stable diffusion&#xff0c;是真的好玩&#xff01; 然后我在想遥感有没有相关的生成模型&#xff0c;找了一下&#xff0c;还真找到了&#xff08;https://github.com/xiaoyuan1996/Stable-Diffusion-for-Remote-Sensing-Image-Generation/tree/main&a…

spark 入门教程

一、安装scala环境 官网下载地址 Download | The Scala Programming Language,本次使用版本为sacla2.11.12,将压缩包解压至指定目录&#xff0c;配置好环境变量&#xff0c;控制台验证是否安环境是否可用&#xff1a; 二、添加pom依赖 创建一个maven项目 1、添加scala的sdk依…

详细分析Java中Service报NullPointerException的相关知识(实战Bug)

目录 前言1. 问题所示2. 基本知识3. 原理分析 前言 在Java中&#xff0c;NullPointerException是一种常见的运行时异常&#xff0c;通常发生在尝试访问或操作一个空对象引用&#xff08;null reference&#xff09;时 1. 问题所示 在操作代码的时候&#xff0c;浏览器报服务…

Mysql - 定点型(DECIMAL)的使用详解及练习

目录 &#x1f436;1. 前言&#xff1a; &#x1f436;2. DECIMAL类型简介 &#x1f436;3. Decimal使用实战 &#x1f96a;#结论1&#xff1a;小数位不足会自动补0 &#x1f96a;#结论2&#xff1a;小数位超出会截断 并按四舍五入处理。 &#x1f96a;#结论3&#xff1…

数据结构实验7:查找的应用

目录 一、实验目的 二、实验原理 1. 顺序查找 2. 折半查找 3. 二叉树查找 三、实验内容 实验一 任务 代码 截图 实验2 任务 代码 截图 一、实验目的 1.掌握查找的基本概念&#xff1b; 2.掌握并实现以下查找算法&#xff1a;顺序查找、折半查找、二叉树查找。 …

2.RHCSA启动配置

rht-clearcourse 0 #重置练习环境 rht-setcourse rh134 #切换CSA练习环境 cat /etc/rht #查看当前环境 virt-manager #打开KVM控制台 rht-vmctl start classroom #必做&#xff0c;start all不会包含classroom&#xff0c;需…

【Linux】Ubuntu的gnome切换KDE Plasma

文章目录 安装KDE Plasma桌面环境添加软件源并更新apt安装kubuntu-desktop&#xff08;作者没有成功&#xff09;aptitude安装kubuntu-desktop多次aptitude install&#xff08;特别重要特别重要&#xff09;其他kde软件包 卸载gnome桌面 Ubuntu自带的桌面环境是gnome&#xff…

PSoc62™开发板之rtc时间获取

实验目的 1.使用PSoc62™芯片读取内部rtc时间 2.OLED屏幕显示当前时间戳 实验准备 PSoc62™开发板SSD1306 OLED模块公母头杜邦线 芯片资源 PSoC 6系列MCU时钟系统由以下几部分组成&#xff0c;PSoc62™开发板没有接外部时钟源&#xff0c;所以只能从IMO、ILO、PILO里边配…