В следующем коде демо codePen здесь
дочерний компонент генерирует пользовательское событие changedMsg
для родительского, которое изменяет свойство данных msg
родительского компонента.Не уверен, почему changedMsg
не работает.Он не изменяет msg
свойство родителя.
Примечание. В настройках одного файла это работает, но не в настройках ниже, где используется тег template
.Не уверен, почему?
VueJS
var child = {
template: '#child',
props: ['parentMsg'],
methods: {
changeParentMsg() {
console.log(this.parentMsg)
this.parentMsg = 'Message was changed by CHILD'
this.$emit('changedMsg', this.parentMsg)
}
}
}
new Vue({
el: '#parent',
data() {
return {
msg: 'Hello World'
}
},
components: {
child
},
methods: {
changeMsg() {
this.msg = 'Changed Own Msg'
}
},
})
HTML
<div>
<h4>Parent</h4>
<p>{{ msg }}</p>
<button @click="changeMsg">Change Own Message</button>
<br>
<div class="child">
<h4>Child</h4>
<child :parentMsg="msg" @changedMsg= "msg = $event"></child>
</div>
</div>
</div>
<template id="child">
<div>
<button @click="changeParentMsg">Change Parnets msg</button>
</div>
</template>
CSS
#parent {
background-color: lightblue;
border: 2px solid;
width: 300px;
}
.child {
background-color: lightgray;
border: 2px solid;
margin-top: 20px
}
Спасибо