使用场景
官方解释,有时让插槽内容能够访问子组件中才有的数据是很有用的。比如我们在使用ant-design-vue 的表格控件时。
<a-table-column title="注释" dataIndex="comment" > <template slot-scope="text, record"> <rx-textbox v-model="record.comment" ></rx-textbox> </template> </a-table-column>
这里从控件传递数据到父组件,我们在使用组件的时候,可以根据我们的需要显示需要的效果,表格控件并不需要关心如何实现数据的展示。
我们怎么理解这个作用域插槽呢?
下面我们举一个简单的例子还说明这个问题。
实现过程
编写子组件
<template> <div class="child"> <h3>这里是子组件</h3> <slot name="demo" :text="account" :record="user"></slot> </div> </template> <script> export default { name:"child", data(){ return { user: ['张三','李四',"王五"], account:"ray" } } } </script>
这里有两个知识点。
1.具名插槽
2.传递数据
把帐号和记录数据传递出去。
父组件代码
<template> <div class="father"> <child> <template slot="demo" slot-scope="{text,record}"> {{text}} <div v-for="item in record" :key="item">{{item}}</div> </template> </child> <child> <template v-slot:demo="{text,record}"> {{text}} <div v-for="item in record" :key="item">{{item}}</div> </template> </child> </div> </template> <script> import Vue from 'vue' import ChildSlot from '@/components/ChildSlot.vue' Vue.component(ChildSlot.name, ChildSlot); export default { name: 'HelloWorld', } </script>
在这里例子中我展示了两种写法:
slot="demo" slot-scope="{text,record}"
这种写法 其实不推荐使用的,这个在2.6之后是需要废弃的。
<template v-slot:demo="{text,record}">
推荐写法使用 v-slot 指令来实现。
最终显示效果其实是一样的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人