To create dynamic variables, you could do the following:
1 - Criar uma variáveis que receberá as variáveis dinâmicas
2 - Fazer um loop para exibi-las
3 - Utilizar this.$set e this.$delete para criar e removê-las
Following is an example code.
new Vue({
el: "#app",
data: function() {
return {
variaveis: {}
};
},
beforeMount: function() {
this.add();
},
methods: {
add: function() {
this.$set(this.variaveis, 'campo1', {
nome: 'Campo 01',
valor: 'Valor 01'
});
},
remover: function(key) {
this.$delete(this.variaveis, key)
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.min.js"></script><divid="app">
<p>É possível criar as propriedades dinamicamente com o vm.$set.</p>
<div>
<div v-for="(variavel, key) in variaveis">
<label>{{ variavel.nome }}</label>
<input v-model="variavel.valor" :placeholder="variavel.nome" type="text">
<button v-on:click="remover(key)">Remover</button>
</div>
</div>
<pre>{{ variaveis }}</pre>
<button v-if="Object.keys(variaveis).length == 0" v-on:click="add">Add</button>
</div>
Note: I made use of this technique to create a page builder with Vue. The difference is that I have several queries and in the creation of each element I say the type in a property.