狂神 Vue slot插槽 笔记

news/2024/7/10 0:26:17 标签: vue, html, node.js, java, js

slot插槽

留一个代办事项,之后想添加什么再添加进来

像是这个结构,从后端要遍历数据

传统的方法是,只在一个标签中便利数据,但是要把数据放在

  • 中的
  • 中就很难实现

html"><li v-for="item in items">
    {{item.message}}
</li>

image-20200905185835892

  • 要保持这种结构div下一个有一个 p 标签 还有一个 ul 标签,ul 标签下还有一些 li 标签,的层次结构不变,最好就使用插槽的知识,更好的进行模块化的规范,让视图层更专注的设置结构,model层能更好的传递数据,让特定的模块就会规定放在特定的位置

  • 先提取出结构

  • image-20200905221407044

  • (1)需要接受model层的数据,且数据放在p标签中,给它预留一个插槽

  • (2)需要接收数据的是 li 标签,放在 ul 中,预留一个插槽

  • 所以大的结构是这样的

  • html">Vue.component("todo",{
        template:'\
        <div>\
            <slot name="todo-title"></slot>\
            <ul>\
                <slot name="todo-items"></slot>\
            </ul>\
        </div>'
    });
    
  • 用斜杠可以代替单双引号

  • 要不然效果应该是这样的

  • html">template:"<div>\n" +
        "        <p></p>\n" +
        "        <ul>\n" +
        "            <li></li>\n" +
        "            <li></li>\n" +
        "            <li></li>\n" +
        "        </ul>\n" +
        "    </div>"
    
  • 这个名为todo的组件中有两个插槽,名为todo-title的插槽放在div中,名为todo-items的插槽放在ul中

  • 然后来制作这两个插槽组件

  • html">Vue.component("todo-title",{
       props:["title"],
       template: "<p>{{title}}</p>"
    });
    Vue.component("todo-items",{
        props:["item"],
        template: "<li>{{item}}</li>"
    });
    
  • 这两个组件要接收model层的参数,所以要加props

  • html"><!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <div id="html" title=vue>vue">
        <todo>
            <todo-items slot="todo-items" v-for="item in todoItems1" v-bind:item="item"></todo-items>
            <todo-title slot="todo-title" v-bind:title="title"></todo-title>
            <todo-items slot="todo-items" v-for="item in todoItems" v-bind:item="item"></todo-items>
        </todo>
        <todo-items slot="todo-items" v-for="item in todoItems1" v-bind:item="item"></todo-items>
        <todo-title slot="todo-title" v-bind:title="title"></todo-title>
        <todo-items slot="todo-items" v-for="item in todoItems" v-bind:item="item"></todo-items>
    
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/html" title=vue>vue/dist/html" title=vue>vue.js">javascript"></script>
    
    <script >javascript">
        Vue.component("todo",{
            template:'\
            <div>\
                <slot name="todo-title"></slot>\
                <ul>\
                    <slot name="todo-items"></slot>\
                </ul>\
            </div>'
        });
        Vue.component("todo-title",{
           props:["title"],
           template: "<p>{{title}}</p>"
        });
        Vue.component("todo-items",{
            props:["item"],
            template: "<li>{{item}}</li>"
        });
        var vm = new Vue({
            el:'#html" title=vue>vue',
            data:{
                title:"haoyun",
                todoItems:["spring","springMVC","mybatis"],
                todoItems1:["Test1","Test2","Test3"]
            }
        });
    </script>
    </body>
    </html>
    
  • image-20200905222613158

  • 从这里就能看出插槽对结构的规划作用,

  • html"><todo>
            <todo-items slot="todo-items" v-for="item in todoItems1" v-bind:item="item"></todo-items>
            <todo-title slot="todo-title" v-bind:title="title"></todo-title>
            <todo-items slot="todo-items" v-for="item in todoItems" v-bind:item="item"></todo-items>
        </todo>
    
  • 有个todo-items插槽组件被放在todo-title组件之上,但是不会影响todo插槽组件设置的结构,依旧会把todo-items组件放置再ul标签下


http://www.niftyadmin.cn/n/1699155.html

相关文章

FreeRTOS_时间管理

目录 1. FreeRTOS 延时函数 1.1 函数 vTaskDelay() 1.2 函数 prvAddCurrentTaskToDelayedList() 1.3 函数 vTaskDelayUntil() 2. FreeRTOS 系统时钟节拍 在使用 FreeRTOS 的过程中我们通常会在一个任务函数中使用延时函数对这个任务延时&#xff0c;当执行延时函数的时候就…

neo4j springboot 日志_Spring Boot配置neo4j(简单版)

图数据库的开发已经变得越来越流行&#xff0c;与springBoot结合也是很正常&#xff0c;在很早前就已经发布了相关Lib&#xff0c;但是当前网上的Spring Boot整合neo4j都极其复杂&#xff0c;也导致了本人在开发过程中耗费很长时间&#xff0c;顾写下这个文章帮助大众理顺neo4j…

狂神 Vue 自定义内容分发

自定义内容分发 如何在slot组件插槽的基础上实现数据操作 因为组件与Vue实例传递数据是通过v-bind和props&#xff0c;当前组件可以绑定当前组件中的事件&#xff0c;但是不能直接绑定到vue实例中的事件&#xff0c;但是要操作vue中的data必须要通过Vue实例中的方法删除&…

容错处理 负载均衡_什么是“备份、容灾、集群、负载均衡”,今天我终于懂了!!!...

关于容灾、备份、集群、负载均衡这类概念&#xff0c;很多朋友都容易混淆&#xff0c;到底它们之间有什么区别&#xff1f;今天小编我就给大家分别介绍一下&#xff0c;让大家有个深刻的理解 &#xff01;一、备份概念的理解"备份"只是将数据COPY一份&#xff0c;在其…

狂神 Vue 第一个vue-cli项目

第一个vue-cli项目 vue-cli提供一个脚手架&#xff0c;用于快速生成一个vue项目模板 预先定义好的目录结构以及基础代码&#xff0c;好比创建maven项目可以选择创建骨架项目&#xff0c;能提高开发效率 需要环境 Node.js:https://nodejs.org/en/Git:https://git-scm.com/do…

安装Valet记录,配置全局环境变量。

1.安装 Homebrew 软件包管理工具&#xff0c;如果已经安装&#xff0c;可以跳过此步骤 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2.更新 Homebrew 到最新版本 brew update 3.使用 Homebrew 安装 PHP 7.…

紘康单片机_紘康科技推出单片机实现自动开机(AUTO RUN)应用

纮康科技(HYCON Technology),创新的模拟IC解决方案供应商,推出一系列新型高集成度、低功耗的单片机.内建24位高分辨率模数转换器,有效位数可达21位,最小讯号分辨率为100nVrms,性能比同类产品更具竞争力.此外,HY11P系列产品除了具有低功耗的应用设计还兼具了数据转换速度近1KHz的…

狂神 Vue Webpack

Webpack 是一个现代化的JavaScript应用程序的静态模块打包器&#xff08;module bundler&#xff09;&#xff0c;会递归的构建依赖关系图&#xff08;dependency graph&#xff09; 浏览器逐渐进化到WebApp模式&#xff0c;通常是一个SPA&#xff08;单页面应用&#xff09;…