【发布时间】:2021-09-16 23:44:26
【问题描述】:
所以我能找到的关于作用域插槽和传递道具的所有内容都不适用于我的具体情况:
我有以下组件顺序:
主页/列表/列表项
现在我决定用一个插槽替换 ListItem,因为我也在其他组件中使用了 List,但在那里我需要 ListOptionsItem。
在我的家庭组件中,我这样做了:
<list
class="mapkeyList"
:content="displayList"
:filterbar="true"
@handleSelection="addSelection"
@delete="deleteElement"
@editItem="editItem"
header="Mapkeys"
:key="mapkeyListKey"
>
<list-item>
</list-item>
</list>
在我的列表组件中,我有这个:
<template>
<div>
<h2 v-if="header">{{header}}</h2>
<div class="listContainer" v-if="showedContent.length > 0">
<div v-for=" (item, index) in showedContent" :key="index">
<slot
:item="item"
:index="index"
:dragable="dragableItems"
@auswahl="auswahlHandle"
@deleteElement="deleteElement"
@editItem="editItem"
:dontShowButtons="dontShowButtons"
@dragStart="handleOverDragStart"
:dragItem="dragItem"
@position="$emit('emitPosition',item)"
:deaktivierbar="deaktivierbar"
>
</slot >
</div>
最后 listItem 和 listOptionsItem 需要访问插槽中的这个道具:
列表项:
<template>
<div class= "flexSpaceBetween" @click="$emit('auswahl',item)">
<div class="textFett">
{{item[0]}}
</div>
<div>
{{item[1]}}
</div>
</div>
我不想在 home 组件中编写所有必需的代码,因为 listOptionsItem 确实需要更多信息和更多空间来编写代码。
我的目标是在 Home 组件中定义我希望列表使用 listItem 组件,而在 Options 组件中,列表应该使用 listItemOptions 组件。将来可能会添加新的 listItem 版本。
【问题讨论】:
-
实在不清楚你想要什么。 如果不把我的家庭组件像气球一样炸毁,我就无法让它工作到底是什么意思?
-
我想访问子组件而不是主组件中的属性。
-
那么你必须通过 props 传递它......
-
你不能。那是我的问题。您在第二个代码中看到我通过了“:item ='item'”。但孩子没有访问权限
-
不,您使
item可用于插槽,而不是用于插槽内的组件...
标签: vue.js