Вы можете просто связать входные данные внутри BlockForm с переменной, которая находится в родительском компоненте.Таким образом, когда вы $ emit из дочернего компонента, просто добавьте значение к сообщениям.
export default {
name: 'app',
components: {
BlockForm,
Message
},
data () {
return {
message : [],
inputVal: {
text: '',
id: ''
}
}
},
methods: {
addBlock () {
const key = this.message.length
this.message.push({
name: this.inputVal.text,
order: this.inputVal.text.length // If the logic is different here, you can just change it
})
this.inputVal = {
text: '',
id: ''
}
}
}
}
Теперь, когда вы вызываете BlockForm,
<template>
<div id="app">
<BlockForm propVal="inputVal" @block="addBlock"/>
<Message v-bind:message="message"/>
</div>
</template>
и внутри BlockForm,
<template>
<div>
<form @submit.prevent="addItem">
<input type="text" v-model="propVal.text">
<input type="hidden" v-model="probVal.id">
<input type="submit" value="enviar">
</form>
</div>
</template>
Теперь, когда вы нажимаете edit для существующего сообщения, просто назначьте это «Message» свойству данных inputVal, сопоставив его с правильным текстом и идентификатором.