是否有任何方法将vue.js组件从子组件渲染到其父项(可能不是直接父项),就像插槽一样,但方向相反?添加vue.js组件从儿童到家
我的用例:在我的根组件中,我确实有一个<router-view>
和一个模块的容器。从路由器视图的任何子组件中,我希望能够将子组件添加到模态包装器。
我在这里错过了vue.js的一个特性,还是有更好的实践来解决这个问题吗?
是否有任何方法将vue.js组件从子组件渲染到其父项(可能不是直接父项),就像插槽一样,但方向相反?添加vue.js组件从儿童到家
我的用例:在我的根组件中,我确实有一个<router-view>
和一个模块的容器。从路由器视图的任何子组件中,我希望能够将子组件添加到模态包装器。
我在这里错过了vue.js的一个特性,还是有更好的实践来解决这个问题吗?
罗伊Ĵ回答评价的溶液:
的解决方案是使用Dynamic Components创建在根组分的“占位符”组分和由在冒落子组件Custom Events切换其内容。
我想我迟到了,但这里是我为了下一代的解决方案(只适用,如果你使用VUE路由器):
routes: [
path: '/dashboard',
name: 'dashboard',
component: DashboardIndex,
children: [{
path: 'popup',
component: PopupPlaceholder,
children: [{
path: 'a',
name: 'a',
component: A,
}, {
path: 'b',
name: 'b',
component: B,
}],
}],
]
我不完全得到的问题,但如果你使用全局组件,您可以简单地在多个元素中重复使用它,并在每个元素中应用自己的插槽内容。 因此,在这种情况下,您将注册一个带有一个或多个插槽的全球* AppModal *组件,并将其用于您需要的孩子。 – JonnySerra
嗯,但如果我想有不同的模式,可以从相同的视图,甚至可以从另一个模式内调用,这似乎不像我想要的那么灵活。在研究这个问题时,我尝试通过事件触发模型($ emit和v-on),但没有看到任何方式在父接收事件后向内容呈现内容。 – dtkahl
https://vuejs.org/v2/guide/components.html#Dynamic-Components? –