动态属性slots参数支持

This commit is contained in:
Gary Fu
2024-10-13 10:34:05 +08:00
parent b0ef42dc1d
commit 4a58f10027

View File

@@ -222,24 +222,6 @@ const formatResult = computed(() => {
return null return null
}) })
const slotsResult = computed(() => {
const results = {}
if (calcOption.value?.slots) {
const slots = calcOption.value.slots
for (const slotKey in slots) {
const slot = slots[slotKey]
if (isFunction(slot)) {
const slotResult = slot(modelValue.value, calcOption.value)
results[slotKey] = {
result: slotResult,
vnode: isVNode(slotResult)
}
}
}
}
return results
})
</script> </script>
<template> <template>
@@ -302,14 +284,14 @@ const slotsResult = computed(() => {
<template <template
v-for="(slot, slotKey) in (calcOption.slots||{})" v-for="(slot, slotKey) in (calcOption.slots||{})"
:key="slotKey" :key="slotKey"
#[slotKey] #[slotKey]="scope"
> >
<component <component
:is="slotsResult[slotKey].result" :is="scope[`__slotResult__${slotKey}`]"
v-if="slotsResult[slotKey]?.vnode" v-if="isVNode(scope[`__slotResult__${slotKey}`] = slot(scope))"
/> />
<template v-else> <template v-else>
{{ slotsResult[slotKey].result }} {{ scope[`__slotResult__${slotKey}`] }}
</template> </template>
</template> </template>
<template <template