一、插槽基本使用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <!--
slot的使用目的是对组件中设置一个空白的自定义元素位置
在实际Vue实例中使用组件时,每一个调用的组件在定义的位置中插入不同的元素
-->
<div id="aaa">
<comp>
<!-- 2、在使用中插入我们希望的东西 -->
<button>这是我们插入的按钮</button>
</comp> <comp>
<p>这是我们插入的段落</p>
</comp> <comp>
<span>插入我们自定义的内容</span>
</comp>
</div> <template id="sss">
<div>
<h3>我是组件</h3>
<p>我是内容</p>
<slot></slot> <!-- 1、在组件的模板中定义插槽标签 -->
</div>
</template> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
const v = new Vue({
el : '#aaa',
components : {
comp : {
template : '#sss'
}
}
});
</script>
</body>
</html>

二、具名插槽的使用

具名插槽,意思就是插槽标签具备name属性,可以命名插槽:

要注意的是,不要和普通slot元素混用,造成插槽混乱

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <div id="app">
<cpn>
<span slot="right">替换name属性为right的插槽</span>
</cpn> <!-- 如果插入的元素没有指定,默认替换掉没有name属性的 --> <hr> <cpn>
<span slot="center">替换name属性为center中间的插槽</span> <!-- 或者指定具体名称进行插入 -->
</cpn>
</div> <template id="cpn">
<div>
<h3>组件</h3>
<p>内容</p> <p>
<!-- 具名插槽 slot标签具有名字属性 -->
<slot name="left"><span>左边</span></slot>
<slot name="center"><span>中间</span></slot>
<slot name="right"><span>右边</span></slot>
</p>
</div>
</template> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
const v = new Vue({
el : '#app' ,
components : {
cpn : {
template : '#cpn'
}
},
});
</script>
</body>
</html>

三、编译作用域问题:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!-- 编译作用域 -->
<div id="app">
<cpn v-show="isShow"></cpn> <!-- 3、判断组件是否显示 -->
</div>
<!-- 答案是true原因是因为 在实例容器元素中只会渲染实例的属性变量,只有在组件自己的实例中去调用自己的属性变量 --> <template id="sss">
<div>
<h3>ssss</h3>
<p>
不显示的按钮
<button v-show="isShow">不显示的按钮</button>
</p>
</div>
</template> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
const app = new Vue({
el : '#app',
data : {
message : '你好',
isShow : true /* 1、 在Vue实例中提供了一个属性isShow 值为true */
},
components : {
cpn : {
template: '#sss',
data () {
return {
isShow : false /* 2、 在注册的组件实例中提供了一个属性isShow 值为false */
}
},
},
},
})
</script>
</body>
</html>

四、作用域插槽:

在父组件中替换插槽的标签元素,但是值内容由子组件提供

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <div id="aaa">
<!-- <comp></comp>-->
<!-- <comp></comp>-->
<!-- <comp></comp>-->
<comp>
<template slot-scope="slot">
<!--<span v-for="item in slot.data">{{item}} | </span>--> <!-- 解决拼接符号的问题 --> <span>{{slot.data.join(' | ')}}</span>
</template> <!-- template 用data获取 也可以把绑定的属性用其他命名 -->
</comp>
</div> <!--<template id="sss">-->
<!-- <div>-->
<!-- <ul>-->
<!-- <li v-for="pl in programLanguages">{{pl}}</li>-->
<!-- </ul>-->
<!-- </div>-->
<!--</template>--> <template id="sss">
<div>
<slot :data="programLanguages"> <!-- 把一个data属性绑定到这个pl变量 -->
<ul>
<li v-for="pl in programLanguages">{{pl}}</li>
</ul>
</slot>
</div>
</template> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
const aaa = new Vue({
el : '#aaa',
components : {
comp : {
template : '#sss',
data () {
return {
programLanguages : [
'JavaScript',
'C/C++',
'ObjectiveC',
'VisualBasic',
'Java',
'GoLang',
'Swift',
'Python',
'Ruby',
'Rust',
'PHP'
]
}
}
}
}
})
</script>
</body>
</html>

【Vue】Re07 插槽Slot的更多相关文章

  1. Vue.js插槽slot和作用域插槽slot-scope学习小结

    一般来说,在Vue项目中使用父子组建时,都是把通用的HTML结构提取出来写成一个子组件,需要动态展示的数据用过prop属性传递,不过有时候我们可能想给子组件传递一个HTML代码,这个时候用prop不太 ...

  2. Vue中插槽slot的使用

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个slot最核心的两个问题在这里就点出来了,是显示不显示和怎样显示. 由于插槽是一块模板,所 ...

  3. vue的插槽slot

    插槽是写在子组件上,用啦留给父级添加内容的位置接口: 1. 父级里的 <template :is='子标签名'>父插入内容</template>标签,里的内容       sl ...

  4. vue 中的slot属性(插槽)的使用

    总结如下: VUE中关于插槽的文档说明很短,语言又写的很凝练,再加上其和方法,数据,计算机等常用选项在使用频率,使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧,回头再学,反正已经 ...

  5. vue 插槽slot

    本文是对官网内容的整理 https://cn.vuejs.org/v2/guide/components.html#编译作用域 在使用组件时,我们常常要像这样组合它们: <app> < ...

  6. vue中的slot(插槽)

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

  7. [Vue]组件——插槽:slot(匿名插槽,具名插槽)与slot-scope(作用域插槽)

    1.单个插槽 | 匿名插槽 1.1<navigation-link> 子组件定义为: <a v-bind:href="url" class="nav-l ...

  8. Vue插槽 slot

    1. 什么是插槽 插槽slot 是往父组件中插入额外内容,实现组件的复用,一个插槽插入到一个对应的标签中 2. 实例: 一个组件中不允许有两个匿名插槽 </head> <body&g ...

  9. 在vue中使用插槽 slot

    插槽(slot)这个概念非常重要 插槽的使用场景1:在子组件里面显示父组件的dom <div id='root'> <child content = '<p>Dell&l ...

  10. vue使用插槽分发内容slot的用法

    将父组件的内容放到子组件指定的位置叫做内容分发 //在父组件里使用子组件 <son-tmp> <div>我是文字,我需要放到son-tmp组件里面制定的位置</div&g ...

随机推荐

  1. nodejs模块总结 gulp小结

     1,内置模块                  fs                     const fs = require('fs')                     fs.read ...

  2. journalctl 命令使用总结

    转载请注明出处: journalctl 命令是 Linux 系统中一个用于查询和管理系统日志的命令行工具,它基于 systemd 的日志守护进程 systemd-journald 的功能. 1. 介绍 ...

  3. 刀剑英雄 刀剑Online 双开 多开 窗口在后台 画面不动

    刀剑英雄 刀剑Online 双开 多开 窗口在后台 画面不动 解决方法: 进游戏前,在游戏设置中,选择"后台渲染",然后再进游戏.

  4. node-sass升级为dart-sass

    卸载node-sass npm uninstall node-sass 安装dart-sass npm install sass sass-loader -D 在选择dart-sass版本的时候建议低 ...

  5. Postman使用记录,通过表格动态赋值循环调用接口 - Using CSV and JSON data files in the Postman Collection Runner

    1.GET请求,通过导入csv文件来处理 GET http://localhost:8080/web/addstudent?sno={{sno}}&name={{name}}&sex= ...

  6. radis简单学习笔记

    原来写接口只用了本机缓存cache 来学习一下radis,用法应该跟cache一样吧,为了配套负载均衡的多服务器是多个服务器都可以读取缓存 一.下载 找了好长时间 github有的时候能上有的时候就上 ...

  7. XAF 属性编辑器(PropertyEditor)- 原理篇

    前言 随着 DEV24.1.3 的发布,XAF Blazor 中的属性编辑器(PropertyEditor)也进行了很大的改动,在使用体验上也更接近 WinForm 了,由于进行了大量的封装,理解上没 ...

  8. Electron 的 安装

    背景 因为搞嵌入式开发的时候,每次烧写不同版本的固件的时候,经常需要重命名,有时候烧错版本我也不知道: 因此我认为对固件的管理比较麻烦,所以我希望能够有一个比较好的工具来做管理,找了一圈没有发现合适的 ...

  9. W5100 硬件协议栈 调试经验

    --- title: W5100 硬件协议栈 调试经验 date: 2020-06-21 11:22:33 categories: tags: - debug - tcpip - w5100 - su ...

  10. 无业游民写的最后一个.net有关项目框架

    理想很丰满,现实往往很残酷. 一种按照ddd的方式,根据业务来把自己需要的模块一个一个写出来,再按照模块把需要的接口一个一个的写出来,堆砌一些中间件,以及解耦的command,handler等等 ,一 ...