【发布时间】:2018-10-29 07:52:08
【问题描述】:
我想使用 Vue 创建一个简单的表单构建器,用户可以在其中单击菜单中的按钮以将不同的表单字段添加到表单中。我知道如果只添加一种类型的表单字段,我可以使用这样的方法 (https://jsfiddle.net/u6j1uc3u/32/):
<div id="app">
<form-input v-for="field in fields"></form-input>
<button type="button" v-on:click="addFormElement()">Add Form Element</button>
</div>
<script type="x-template" id="form-input">
<div>
<label>Text</label>
<input type="text" />
</div>
</script>
还有:
Vue.component('form-input', {
template: '#form-input'
});
new Vue({
el: '#app',
data: {
fields: [],
count: 0
},
methods: {
addFormElement: function() {
this.fields.push({type: 'text', placeholder: 'Textbox ' + (++this.count)});
}
}
})
但是,如果有不止一种类型的表单域(输入、文件、选择等)怎么办?我在想可能为每种类型构建一个不同的组件,但是我将如何在一个表单元素列表中显示多种类型的组件?
我可以根据fields数组中的数据创建一个包含不同类型子组件的组件吗?
或者有没有更好的方法来解决我错过的这种情况?我刚刚开始学习 Vue,因此非常感谢您的帮助!
【问题讨论】:
-
好像需要动态组件,查看Vue Official Guide: dynamic component
-
谢谢,这让我走上了正确的道路
标签: javascript vue.js components