gpt4 book ai didi

javascript - vue-选择 : Passing option slot from grandparent component in VueJs

转载 作者:行者123 更新时间:2023-12-02 22:04:36 24 4
gpt4 key购买 nike

我正在使用自定义下拉组件“vue-select”,它有一个插槽选项,通过它我们可以自定义选项 View ,如本文档所示 -> https://vue-select.org/guide/slots.html

类似的事情我想通过从祖 parent 组件传递一个插槽来实现它。这是我尝试过的。

App.vue(祖 parent 组件)

<template>
<div id="app">
<v-select-wrapper v-model="selectedData" :options-data="[{
id:1,
label: 'New York'
}, {
id:2,
label : 'London'
}]">
<template v-slot:option-data="option">
{{option.id}} -
{{ option.label }}
</template>
</v-select-wrapper>
</div>
</template>

VSelectWrapper.vue(父组件)

<template>
<v-select :options="optionsData" :value="value" @input="inputChanged">

<template v-slot:option="option">
<slot name="option-data"/>
</template>
</v-select>
</template>

<script>
import vSelect from "vue-select";

export default {
name: "VSelectWrapper",
components: {
vSelect
},
props: {
optionsData: {type: Array},
value: {}
},
methods: {
inputChanged(val) {
this.$emit("input", val);
}
}
};
</script>

我收到的输出只是下拉选项中的“-”(连字符)字符。数据未通过插槽传递。

如何实现?

最佳答案

你的槽 Prop 没有被传递下去的原因是你没有在槽上绑定(bind)任何东西来供 children 拾取。为此,您只需添加 v-bind="option" ,其中 optionvue-select 组件本身的 slot 属性:

VSelectWrapper.vue

<v-select
:options="optionsData"
:value="value"
@input="inputChanged">
<template v-slot:option="option">
<slot name="option-data" v-bind="option"></slot>
</template>
</v-select>

关于javascript - vue-选择 : Passing option slot from grandparent component in VueJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59756903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com