有没有办法在Vue中的嵌套组件中“组合”插槽?

时间:2017-12-05 13:21:37

标签: javascript vuejs2 vue-component

假设我正在为Vue开发一个增强的popper.js,我即将给它一些额外的功能。这是非常(子)组件的样子:

 <popper>
   <div :is="tag" class="popper">
     {{ content }}
   </div>
   <button class="btn btn-primary" slot="reference">
     Reference Element
   </button>
 </popper>

正如您所看到的,要使其工作,需要使用slot =“reference”属性在“.popper”div下方定义引用元素。

问题

如何将 enhanced-popper 组件转换为可重用的实体,也就是说能够间接传递时隙数据 - 来自 <enhanced-popper> //referenced element// </enhanced-popper>以便它在子(popper.js)组件中有slot =“reference”属性?

什么行不通

使用插槽并在父组件传入的组件中具有该属性不会产生所需的结果,因为它根本不会被渲染。

  <popper>
   <div :is="tag" class="popper">
    {{ content }}
   </div>
   <slot></slot>
 </popper>

为确保拥有该属性,我还尝试将子组件中的所述按钮替换为插槽内的命名插槽,并在我的 enhanced-popper :

<slot name="reference">
 <slot></slot>
</slot>

这样第一个分段组件具有属性 - 并且几乎有效,但是因为有两个“槽层”(不知道如何调用它) ,引用的组件不是第一个作为子元素,并且popper被错误定位。

干杯, 帕

0 个答案:

没有答案