我在VueJS 2中有一个案例,其中有一个3级组成的组件(祖父母 - 孩子 - 孙子),我需要将一个模板/插槽从祖父母传递给孙子(就是这一个b-table
来自Bootstrap + Vue库(https://bootstrap-vue.js.org/docs/components/table)的组件。
<template>
<DataTable
:tableFields="postFields"
:tableService="posts"\
/>
</template>
<script>
export default {
name: 'Posts',
components: {
DataTable,
},
</script>
<template>
<b-table
:items="items"
:fields="tableFields"
/>
</template>
<script>
export default {
name: 'Posts',
props: {
tableFields: {type: Array, required: true},
tableService: {type: Object, required: true},
},
components: {
DataTable,
},
</script>
这是来自Bootstrap + Vue(https://bootstrap-vue.js.org/docs/components/table)
的<b-table>
因此,当Bootstrap + Vue文档代表时,我可以将<template>
传递给<b-table>
,但我想首先将其从祖父母传递给孩子,然后从孩子传递到<b-table>
答案 0 :(得分:1)
@ ruy-garcia我使用祖父母中定义的属性解决了类似的问题。此解决方案仅适用于您想要更新其中的一些属性的插槽,因此它不那么灵活。
// Grandparent
<app-table
:tableFooterLink="{
link: {name: 'new-player'},
text: 'Create New Player'
}"
>
然后在子组件中检查属性。
// Child component
<vue-good-table>
<template v-if="tableFooterLink !== undefined" slot="table-actions">
<router-link class="create-new-player-btn" :to="{name: 'new-player'}">
{{ tableFooterLink.text }}
</router-link>
</template>
</vue-good-table>
export default {
// stuff
props: {
tableFooterLink: {
type: Object
}
}
}