【发布时间】:2019-04-05 01:33:59
【问题描述】:
vue.js 是否与 Angular 的 *ngTemplateOutlet 指令等效?假设我有一些这样定义的组件:
<template>
<div id="independentComponent">
Hello, {{firstName}}!
</div>
</template>
<script>
export default {
name: "independentComponent",
props: ['firstName']
}
</script>
...
<template>
<div id="someChildComponent">
<slot></slot>
<span>Let's get started.</span>
</div>
</template>
<script>
export default {
name: "someChildComponent"
}
</script>
我希望能够做这样的事情:
<template>
<div id="parentComponent">
<template #indepdentInstance>
<independentComponent :firstName="firstName" />
</template>
<someChildComponent>
<template #indepdentInstance></template>
</someChildComponent>
</div>
</template>
<script>
export default {
name: "parentComponent",
components: {
someChildComponent,
independentComponent
},
data() {
return {
firstName: "Bob"
}
}
}
</script>
在 Angular 中,我可以使用
<div id="parentComponent">
<someChildComponent>
<ng-container *ngTemplateOutlet="independentInstance"></ng-container>
</someChildComponent>
<ng-template #independentInstance>
<independentComponent [firstName]="firstName"></independentComponent>
</ng-template>
</div>
但看起来 Vue 要求将元素写入 DOM 中的模板位置。有什么方法可以引用内联元素并使用它作为插槽传递给另一个组件?
【问题讨论】:
-
很多时候不可能按照另一个框架的确切原则在一个框架中编写解决方案。你到底想在这里完成什么?我敢肯定会有一种 vue 的方式来做到这一点。
标签: javascript vue.js transclusion