for循环中的Vue插槽范围

Posted

技术标签:

【中文标题】for循环中的Vue插槽范围【英文标题】:Vue slot scopes within for loop 【发布时间】:2019-07-27 00:56:15 【问题描述】:

我在v-for 循环中有多个插槽,如下所示。除了为每个插槽绑定我的数据之外,有没有办法可以将此数据绑定到 v-for 循环中的所有插槽?

<div class="vehicle-listing" v-for="(vehicle, index) in vehicles" :key="vehicle.id ? vehicle.id : 'undefined'+index">

    <div class="vehicle-listing__image">
        <slot name="listing-image" v-bind:vehicle="vehicle">
            Default content
        </slot>
    </div>

    <div class="vehicle-listing__title">
        <slot name="listing-title" v-bind:vehicle="vehicle">
            <slot name="listing-title__header" v-bind:vehicle="vehicle">
                Default content
            </slot>
            <slot name="listing-title__subtitle" v-bind:vehicle="vehicle">
                Default content
            </slot>
            <slot name="listing-title__price" v-bind:vehicle="vehicle">
                Default content
            </slot>
            <slot name="listing-title__favourites" v-bind:vehicle="vehicle">
               Default content
            </slot>
        </slot>
    </div>

    <div class="vehicle-listing__summary">
        <slot name="listing-summary" v-bind:vehicle="vehicle">
            Default content
        </slot>
    </div>

    <div class="vehicle-listing__finance">
        <slot name="listing-finance" v-bind:vehicle="vehicle">
            Default content
        </slot>
    </div>

    <div class="vehicle-listing__info">
        <slot name="listing-info" v-bind:vehicle="vehicle">
           Default content
        </slot>
    </div>

    <div class="vehicle-listing__location">
        <slot name="listing-location" v-bind:vehicle="vehicle">
           Default content
        </slot>
    </div>

    <div class="vehicle-listing__button-block">
        <slot name="listing-cta" v-bind:vehicle="vehicle">
           Default content
        </slot>
    </div>

</div>

【问题讨论】:

【参考方案1】:

不,没有办法一次绑定到所有插槽。您需要为每个插槽单独提供绑定。

https://vuejs.org/v2/guide/components-slots.html#Scoped-Slots

【讨论】:

以上是关于for循环中的Vue插槽范围的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vue.js 插槽范围内传递方法

将类绑定到 Vue.js 2 中的插槽

细说Vue作用域插槽,匹配应用场景。

vue 作用域插槽(插槽赋值)

Vue作用域插槽:用作循环结构的模版

为什么我在v-for的插槽中只有一个元素?