Dynamically adding different components in Vue Dynamically adding different components in Vue vue.js vue.js

Dynamically adding different components in Vue


Ok, so I looked into dynamic elements and managed to pull this together:

Vue.component('form-input', {  template: '#form-input'});Vue.component('form-select', {  template: '#form-select'});Vue.component('form-textarea', {  template: '#form-textarea'});new Vue({  el: '#app',  data: {    fields: [],    count: 0  },  methods: {    addFormElement: function(type) {      this.fields.push({        'type': type,        id: this.count++      });    }  }})
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js"></script><div id="app">  <component v-for="field in fields" v-bind:is="field.type" :key="field.id"></component>  <button type="button" v-on:click="addFormElement('form-input')">Add Textbox</button>  <button type="button" v-on:click="addFormElement('form-select')">Add Select</button>  <button type="button" v-on:click="addFormElement('form-textarea')">Add Textarea</button></div><script type="x-template" id="form-input">  <div>    <label>Text</label>    <input type="text" />  </div></script><script type="x-template" id="form-select">  <div>    <label>Select</label>    <select>      <option>Option 1</option>      <option>Option 2</option>    </select>  </div></script><script type="x-template" id="form-textarea">  <div>    <label>Textarea</label>    <textarea></textarea>  </div></script>