将任意Vue.js组件添加到父组件

时间:2016-08-28 17:37:24

标签: javascript dom vue.js data-driven

我正在使用Vue.js为我的html5游戏构建ui。我有一个案例,我想定义ui-containers,它基本上只是将其他ui组件分组并将它们放置在屏幕上的某个位置。所以我可以继续这样的事情:

<ui-container>
  <ui-component1></ui-component1>
  <ui-component2></ui-component2>
  <ui-component3></ui-component3>
</ui-container>

我需要根据表示容器内容的数据模型动态添加和删除这些组件。问题是我想保持ui-container的通用性,这样我就可以将任何Vue组件附加到它,而不需要模板中有关哪些组件的信息。

我用Google搜索并找到了一个动态注入组件的示例:http://forum.vuejs.org/topic/349/injecting-components-to-the-dom 虽然示例中的数据驱动版本易于制作和理解,但它使用v-for for tag,因此需要先了解子组件的类型。

所以问题是,我如何推广该示例以动态地使用任何组件?我的数据模型是否应该具有组件类型或标签名称,然后在v-for中进行插值?或者是否存在这种要求的机制?

1 个答案:

答案 0 :(得分:2)

您可以使用特殊is属性动态设置组件的类型。这是docs。代码看起来有点像:

<div id="app">
  <div v-for="component in components" :is="component.type" :value="component.value"></div>
</div>

小提琴演奏:Dynamic Vue.js components