vue多层级组件间插槽使用

插槽使用不仅仅存在于父子组件间,当涉及跨级使用时如何处理呢?这里我们以示例的方式进行说明。
有一爷爷辈(Level1)组件嵌套了爸爸辈(Level2)组件,爸爸辈组件中又嵌入了儿子辈(Level3)组件,现需要在爷爷辈组件中设置孙子组件中插槽的内容,实现方式如下:

儿子(level3)组件:

<template>
	<div>
		<h1>谁的{{goods}}?</h1>
		<!-- 定义插槽用于接受其父级组件的插槽内容 -->
		<slot name="cont" :slotData="goods">I am level3's {{goods}}!</slot>
	</div>
</template>

<script>
	export default{
		data(){
			return {
				goods: "apple"
			}
		}
	}
</script>

爸爸(level2)组件:

1)方式1:模板方式

<template>
	<level3>
		<!-- 调用子组件的插槽,向子组件传递内容 -->
		<template v-slot:cont="{goods}">
			<!-- 定义插槽用于接受其父级组件的插槽内容 -->
			<slot name="cont" :slotData="goods">I am level2's {{goods}}!</slot> 
		</template>
	</level3>
</template>

<script>
	import level3 from "./level3.vue";
	export default{
		components: {
			level3
		}
	}
</script>

2)方式2:渲染函数方式

export default {
	render(createElement) {
	    return createElement(
	      'level3',
	      {
	        scopedSlots: this.$scopedSlots // 将父组件的作用域插槽传递给子组件
	      }
	    );
	  }
}

爷爷(level1)组件:

<template>
	<level2>
		<!-- 调用子组件的插槽,向子组件传递内容 -->
		<template v-slot:cont="{goods}">
			<div style="color:red">I am level1's {{goods}}!</div>
		</template>
	</level2>
</template>

<script>
	import level2 from "./level2.vue";
	export default{
		components: {
			level2
		}
	}
</script>
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-table是element-ui框架中的一个表格组件,可以用于展示数据。在el-table中使用树状列表,可以通过添加层级虚线来区分不同层级的节点。 首先,在el-table的列定义中,可以使用作用域插槽(scoped slot)来自定义表格的内容。在作用域插槽中,可以根据数据的层级信息来添加层级虚线。 具体实现方法如下: 1. 首先,在el-table的列定义中定义一个作用域插槽,命名为default。 ```html <el-table-column prop="name" label="名称"> <template slot-scope="scope"> <span :style="{marginLeft: scope.row.level * 20 + 'px'}"></span><!--根据层级信息设置缩进--> <span>{{scope.row.name}}</span><!--显示节点名称--> </template> </el-table-column> ``` 2. 在el-table中设置数据源,该数据源应包含每个节点的层级信息。例如: ```javascript data() { return { tableData: [ { name: '节点1', level: 0 }, { name: '节点2', level: 1 }, { name: '节点3', level: 2 }, // 其他数据... ] } } ``` 3. 在组件中引入el-table,并绑定数据源。 ```html <el-table :data="tableData" > <!-- 列定义 --> <el-table-column prop="name" label="名称"> <template slot-scope="scope"> <span :style="{marginLeft: scope.row.level * 20 + 'px'}"></span> <span>{{scope.row.name}}</span> </template> </el-table-column> </el-table> ``` 通过上述方法,可以在el-table中创建树状列表,并按照层级信息添加层级虚线,使得不同层级的节点更加清晰可辨。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值