Vue.js插槽slot和作用域插槽slot-scope学习小结
子组件
<template>
<div>
<!-- 如果有多个插槽,可以通过name命名 -->
<div style="background-color: yellowgreen">
<slot name="header"></slot>
</div>
<!-- 父组件传递过来的值会展示在slot标签中 -->
<slot></slot>
<ul v-if="todo">
<li>姓名: {{todo.name}}</li>
<li>年龄: {{todo.age}}</li>
<li>爱好: {{todo.hobby}}</li>
</ul>
<div style="color: gold">
<slot name="footer"></slot>
</div>
</div>
</template> <script>
export default {
name: 'child',
props: {
todo: Object
}, data () {
return {
}
}, created () {
console.log(this.todo, 'todo')
}
} </script> // 父组件
<template>
<div>
<!-- 引入子组件 -->
<child :todo="list">
<!-- 这里的内容会渲染到子组件name为header的标签中 -->
<template slot="header">
<p>放在头部的内容</p>
</template>
<!-- 子组件双标签中的内容会被渲染到子组件的slot标签里 -->
<h3>插槽标题</h3>
<!-- 这里的内容会渲染到子组件name为footer的标签中 -->
<template slot="footer">
<p>放在底部的内容</p>
</template>
</child>
</div>
</template> <script>
import child from './child'
export default {
name: 'parent',
components: {child}, data () {
return {
list: {
name: '灵梦',
age: 18,
text: '热爱学习',
hobby: '踢足球'
}
}
} }
</script>
渲染效果:

子组件
<template>
<div>
<ul v-if="todo.length" v-for="item in todo" :key="item.id">
<li>姓名: {{item.name}}</li>
<li>年龄: {{item.age}}</li>
<li>爱好: {{item.hobby}}</li>
</ul>
</div>
</template>
<script>
export default {
name: 'child',
props: {
todo: Array
} </script> // 父组件
<template>
<div>
<!-- 引入子组件 -->
<child :todo="list">
</child>
</div>
</template> <script>
import child from './child'
export default {
name: 'parent',
components: {child}, data () {
return {
list: [
{name: '灵梦', age: 18, text: '热爱学习', hobby: '踢足球', id: 1},
{name: '李明', age: 13, text: '画画很棒', hobby: '画画', id: 2},
{name: '韩梅梅', age: 25, text: '性格文静', hobby: '做手工', id: 3}
]
}
} }
</script>

// 子组件
<template>
<div>
<ul v-if="todo.length" v-for="(item,index) in todo" :key="item.id">
<li>姓名: {{item.name}}</li>
<li>年龄: {{item.age}}</li>
<!-- 如果是第二项,就使用作用域插槽,重新展示 -->
<li v-if="index === 1">
<!-- 定义了content把item传递到父组件,定义的名字可以随意取,需要传递的数据写在后面 -->
<slot :content="item"></slot>
</li>
<li v-else>爱好: {{item.hobby}}</li>
</ul>
</div>
</template>
<script>
export default {
name: 'child',
props: {
todo: Array
} </script> // 父组件
<template>
<div>
<!-- 引入子组件 -->
<child :todo="list">
<!-- 在子组件用slot-scope结收传递过来的数据,接收的名字可以随意取 -->
<template slot-scope="scope">
<!-- scope后接的就是你在子组件定义的传递值的名称,scope.content就拿到了传递过来的值,在这里可以直接使用 -->
描述: {{scope.content.text}}
</template>
</child>
</div>
</template> <script>
import child from './child'
export default {
name: 'parent',
components: {child}, data () {
return {
list: [
{name: '灵梦', age: 18, text: '热爱学习', hobby: '踢足球', id: 1},
{name: '李明', age: 13, text: '画画很棒', hobby: '画画', id: 2},
{name: '韩梅梅', age: 25, text: '性格文静', hobby: '做手工', id: 3}
]
}
} }
</script>


Vue.js插槽slot和作用域插槽slot-scope学习小结的更多相关文章
- Vue.js中css的作用域
Vue.js中的css的作用域问题: 如果在vue组件下的style中定义样式,效果会作用于整个html页面,如果只想本组件的css样式只作用于本组件的话,在<style>标签里添加sco ...
- Vue.js 源码分析(二十六) 高级应用 作用域插槽 详解
普通的插槽里面的数据是在父组件里定义的,而作用域插槽里的数据是在子组件定义的. 有时候作用域插槽很有用,比如使用Element-ui表格自定义模板时就用到了作用域插槽,Element-ui定义了每个单 ...
- Vue基础-匿名插槽与作用域插槽的合并和覆盖行为
Vue 测试版本:Vue.js v2.5.13 Vue 文档: <slot> 元素可以用一个特殊的特性 name 来进一步配置如何分发内容.多个插槽可以有不同的名字.具名插槽将匹配内容片段 ...
- Vue.js 源码分析(二十五) 高级应用 插槽 详解
我们定义一个组件的时候,可以在组件的某个节点内预留一个位置,当父组件调用该组件的时候可以指定该位置具体的内容,这就是插槽的用法,子组件模板可以通过slot标签(插槽)规定对应的内容放置在哪里,比如: ...
- vue2 作用域插槽slot-scope详解
插槽分为单个插槽,具名插槽,还有作用域插槽,前两种比较简单这里就不赘述了,今天的重点是讨论作用域插槽. 简单来说,前两种插槽的内容和样式皆由父组件决定,也就是说显示什么内容和怎样显示都由父组件决定: ...
- vuejs作用域插槽
作用域插槽 <div id='root'> <child> <template slot-scope='props'> <h1>{{props.item ...
- Vue.js中scoped引发的CSS作用域探讨
前言 在Vue.js的组件化开发中,常常会对某个组件的style标签加上scoped属性,如<style lang='less' scoped>,这样做的目的在于使这个组件的样式不能轻易在 ...
- vue.js+boostrap最佳实践
一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostrap优雅的样式和丰富的组件使得页面开发变 ...
- vue.js+boostrap
vue.js+boostrap最佳实践 一.为什么要写这篇文章 最近忙里偷闲学了一下vue.js,同时也复习了一下boostrap,发现这两种东西如果同时运用到一起,可以发挥很强大的作用,boostr ...
随机推荐
- cmake笔记
注:cmake . 当前文件夹(一个点) cmake .. 父目录(两个点) 例子一 一个经典的C程序,如何用cmake来进行构建程序呢? //main.c #include <stdi ...
- OM Responsibility Flow
- ElasticSearch 笔记(二)
记录一些核心概念 1) Near Realtime (NRT): 近实时,包括 2 个方面,① 数据从写入 Elasticsearch 到可被搜索.分析的延迟 ( 大约 1 秒 ); ② 从 es 中 ...
- lda:变分的推导
lda,latent diriclet allocation,是一个最基本的bayesian模型.本文要研究lda基于变分的推导方法.意义是重大的. 一.符号的定义 : the number of t ...
- Android 画个电池出来(Paint和canvas)
1.Android中很多时候都要自己去画一个自定义控件出来,就需要用到Paint和Canvas这两个类. 2.效果图:
- 图像读取Exif小知识,图像扶正,还原拍摄时的角度
在做人脸识别的时候发现很多手机拍摄的图像在C#读取之后方向出现了错误,Bitmap中的宽度和实际的windows的文件属性内的参数相反,引起一阵测试和思考,后来百度出来可以用Exif来解决 githu ...
- angular 守卫路由
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; im ...
- 「BZOJ 2152」聪聪可可
题目链接 戳这 \(Solution\) 这道题看起来就像点分治对吧.没错就是点分治. 什么是点分治 如果你不会点分治,可以去看看这儿 现在看到这里,首先确保你已经会了点分治,如果不会你还往下看,听不 ...
- 关于jboss的线程问题+java.lang.outofmemoryError
近日来,用Jmeter做压力测试.发现,每台客户机使用800个线程组压力倍增.昨天的测试,到了今天下午都没有跑完. 仔细观察了下Jboss的错误日志,发现,jboss已经宕机了. 本身后台的环境是使用 ...
- SDUT OJ 数据结构实验之排序一:一趟快排
数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...