当组件内部依赖其他子组件时,该组件的slot内容无法传递给其子组件
mpvue 1.0.13
mpvue-template-compiler 1.0.13
mpvue-loader 1.1.4
问题复现步骤:
App.vue
<card>hello world</card>
card.vue
<div>
<item>
<slot></slot>
</item>
</div>
item.vue
<div>
<slot></slot>
</div>
观察到的表现:
item无法获取$slotdefault,因为card的$slotdefault并未向下传递:
card.wxml
<view class="_div data-v-7e87584c card">
<template name="default"></template>
<template data="{{...$root[$kk+'1'], $root, $slotdefault:'data-v-7e87584c-default-1'}}" is="04c7720c"></template>
</view>
item.wxml
<view class="_div data-v-07699a5d item">
<template name="default"></template>
<template data="{{...$root[$k], $root}}" is="{{$slotdefault || 'default'}}"></template>
</view>
slots.wxml
<template name="data-v-41a81a3b-default-0"> hello world </template>
<template name="data-v-7e87584c-default-1">
<template data="{{...$root[$k], $root}}" is="{{$slotdefault || 'default'}}"></template>
</template>
期望的表现:
如果内将card作用域内的$slotdefault赋值给新的变量,如$parentslotdefault,将item内解析出来的模板中data增加$slotdefault,就可以实现slot内容的透传,如下:
card.wxml
<view class="_div data-v-7e87584c card">
<template name="default"></template>
<template data="{{
...$root[$kk+'1'],
$root,
$slotdefault:'data-v-7e87584c-default-1',
$parentslotdefault:$slotdefault
}}" is="04c7720c"></template>
</view>
item.wxml
<view class="_div data-v-07699a5d item">
<template name="default"></template>
<template data="{{...$root[$k], $root, $slotdefault: $parentslotdefault}}" is="{{$slotdefault || 'default'}}"></template>
</view>
2条答案
按热度按时间pxiryf3j1#
666刚好遇到了同样的问题,大佬正解了,求官方解决
aiqt4smr2#
借楼说一个场景,
通过v-for生成slot,转化后的代码 template is 属性值一直 为 $slotdefault.
需要同样在此issue传入$slotdefault的地方改动下传值方式。