组件中本地数据用v-bind发送,父级中用 v-slot 可以接收:
App.vue:
v-slot:"dataFromSlot">
{{ dataFromSlot.lclData }}
运行示例 »
在上面的例子中,"dataFromSlot"只是一个我们可以自己选择的名称来表示我们从作用域槽接收到的数据对象。 我们使用"lclData"属性从槽中获取文本字符串,并使用插值最终在 标签中呈现文本。
作用域槽可以使用 v-for 从数组发送数据,但 App.vue 中的代码基本相同:
SlotComp.vue:
:foodName="x"
>
App.vue:
v-slot="food">
{{ food.foodName }}
运行示例 »
作用域槽可以使用 v-for 从对象数组发送数据:
SlotComp.vue:
:foodName="x.name"
:foodDesc="x.desc"
:foodUrl="x.url"
>
App.vue:
{{ food.foodName }}
food.foodUrl>
{{ food.foodDesc }}
运行示例 »
作用域槽还可以发送静态数据,即不属于 Vue 实例的 data 属性的数据。
发送静态数据时,我们不使用v-bind。
在下面的示例中,我们发送一个静态文本和一个动态绑定到数据实例的文本,以便我们可以看到差异。
SlotComp.vue:
App.vue:
{{ texts.staticText }}
{{ texts.dynamicText }}
运行示例 »
可以命名作用域插槽。
要使用命名作用域插槽,我们需要使用"name"属性来命名组件内的插槽。
要从命名槽接收数据,我们需要在使用组件的父级中使用 v-slot 指令或简写来引用该名称 #.
在此示例中,组件被创建一次引用槽"leftSlot",一次引用槽"rightSlot"。
SlotComp.vue:
App.vue:
{{ leftProps.text }}
{{ rightProps.text }}
运行示例 »
或者,我们可以使用两个不同的 "template" 标签创建一次组件,每个 "template" 标签引用不同的槽。
在此示例中,组件仅创建一次,但具有两个 "template" 标签,每个标签引用不同的槽。
SlotComp.vue 与前面的示例完全相同。
App.vue:
{{ leftProps.text }}
{{ rightProps.text }}
运行示例 »
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习