# μ΄λ²€νΈ λ°μ
μ΄λ²€νΈ λ°μμ μ»΄ν¬λνΈμ ν΅μ λ°©λ² μ€ νμ μ»΄ν¬λνΈμμ μμ μ»΄ν¬λνΈλ‘ ν΅μ νλ λ°©μμ λλ€.
# μ΄λ²€νΈ λ°μ μ½λ νμ
νμ μ»΄ν¬λνΈμ λ©μλλ λΌμ΄ν μ¬μ΄ν΄ ν κ³Ό κ°μ κ³³μ μλμ κ°μ΄ μ½λλ₯Ό μΆκ°ν©λλ€.
// νμ μ»΄ν¬λνΈμ λ΄μ©
this.$emit('μ΄λ²€νΈ λͺ
');
κ·Έλ¦¬κ³ λμ ν΄λΉ μ΄λ²€νΈλ₯Ό μμ νκΈ° μν΄ μμ μ»΄ν¬λνΈμ ν νλ¦Ώμ μλμ κ°μ΄ ꡬνν©λλ€.
<!-- μμ μ»΄ν¬λνΈμ ν
νλ¦Ώ -->
<div id="app">
<child-component v-on:μ΄λ²€νΈ λͺ
="μμ μ»΄ν¬λνΈμ μ€νν λ©μλ λͺ
λλ μ°μ°"></child-component>
</div>
# μ΄λ²€νΈ μ½λ μμ
κ·ΈλΌ μμ μμ μ½λλ₯Ό μ°Έκ³ νμ¬ κ°λ¨ν μ΄λ²€νΈ λ°μ , μμ μ½λλ₯Ό μ§λ³΄κ² μ΅λλ€.
// νμ μ»΄ν¬λνΈ : childComponent
var childComponent = {
methods: {
sendEvent: function() {
this.$emit('update');
}
}
}
// μμ μ»΄ν¬λνΈ : root μ»΄ν¬λνΈ
new Vue({
el: '#app',
components: {
'child-component': childComponent
},
methods: {
showAlert: function() {
alert('event received');
}
}
})
<div id="app">
<child-component v-on:update="showAlert"></child-component>
</div>
μ μ½λλ νμ μ»΄ν¬λνΈμΈ childComponentμμ sendEvent()
λ©μλκ° μ€νλλ©΄ update
λΌλ μ΄λ²€νΈκ° λ°μλκ³ ,
μ΄λ₯Ό μμ μ»΄ν¬λνΈμΈ λ£¨νΈ μ»΄ν¬λνΈμ v-on
λλ ν°λΈλ‘ μ΄λ²€νΈλ₯Ό λ°μ showAlert()
λ©μλλ₯Ό μ€ννλ μ½λμ
λλ€.
μ€ν κ²°κ³Όλ event received λΌλ κ²½κ³ μ°½μ΄ νμλ©λλ€.