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 ...
随机推荐
- KMP算法细讲(豁然开朗)
一.KMP算法是如何针对传统算法修改的 用模式串P去匹配字符串S,在i=6,j=4时发生失配: ---------------------------------------------------- ...
- zend studio中安装Emmet插件后迅速编写html的方法
table>tr*3>th*1+td*3h1{hello} <h1>hello</h1>a[href="xx.xxx.xxx(网址) ...
- Monkey进行压力测试定位问题分析
Monkey测试的log分析,我们可以通过几个关键词来判断测试是否通过. 分析log方法一(粗糙一点): 1)Monkey finished打开LOG,查看log的最下端,是否有类似以下字段:## ...
- 编写高质量代码改善C#程序的157个建议——建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T>
建议29:区别LINQ查询中的IEnumerable<T>和IQueryable<T> LINQ查询一共提供了两类扩展方法,在System.Linq命名空间下,有两个静态类:E ...
- MySQL性能调优与架构设计——第2章 MySQL架构组成
第2章 MySQL架构组成 前言 麻雀虽小,五脏俱全.MySQL 虽然以简单著称,但其内部结构并不简单.本章从MySQL物理组成.逻辑组成,以及相关工具几个角度来介绍 MySQL 的整体架构组成, ...
- windows phone 换肤(2)
//这里有篇参考文章 http://www.cnblogs.com/tianhonghui/p/3373276.html#commentform 以下思路是来自徐老师,昨晚看了一个晚上球赛,睡了不到6 ...
- Highsoft.Highcharts 5.0.6439.38401 key
Highcharts .NET allows developers to make charts using Highcharts API with the Microsoft .NET Framew ...
- 5w5:第五周程序填空题1
描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8 ...
- bzoj2440完全平方数
题目链接 上来先吐槽题面!!!!!! 你跟我说$1$不是完全平方数昂? 看了半天样例啊. 活生生的半天$……$ 莫比乌斯 反演 函数容斥一下,每次二分就好 反正本宝宝不知道反演是啥. 每次判断应 ...
- Unity小知识---第三人称中设置摄像机的简单跟随
第三人称中设置摄像机的简单跟随 private Transform player; private Vector3 offect; private float smooothing = 3f; //插 ...