<!DOCTYPE html>
<head>
<title>EventBus</title>
</head>
<body>
<div id="app">
<child-component></child-component>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var eventBus = new Vue()
Vue.component('child-component', {
template: '<div>ํ์ ์ปดํฌ๋ํธ ์์ญ์
๋๋ค.<button v-on:click="showLog">show</button></div>',
methods: {
showLog: function() {
eventBus.$emit('triggerEventBus', 100)
}
}
})
var app = new Vue({
el: '#app',
created: function() {
eventBus.$on('triggerEventBus', function(value) {
console.log("์ด๋ฒคํธ๋ฅผ ์ ๋ฌ๋ฐ์. ์ ๋ฌ๋ฐ์ ๊ฐ : ", value)
})
}
})
</script>
</body>
</html>
<์ฒ๋ฆฌ ๊ณผ์ >
1. ๋จผ์ ์ด๋ฒคํธ ๋ฒ์ค๋ก ํ์ฉํ ์ ์ธ์คํด์ค๋ฅผ 1๊ฐ ์์ฑํ๊ณ , eventBus๋ผ๋ ๋ณ์์ ์ฐธ์กฐํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด eventBus๋ผ๋ ๋ณ์๋ก ์ ์ธ์คํด์ค์ ์์ฑ๊ณผ ๋ฉ์๋์ ์ ๊ทผํ ์ ์๋ค.
2. ํ์ ์ปดํฌ๋ํธ์๋ template ์์ฑ๊ณผ methods ์์ฑ์ ์ ์ํ๋ค. template ์์ฑ์๋ 'ํ์ ์ปดํฌ๋ํธ ์์ญ์ ๋๋ค'๋ผ๋ ํ ์คํธ์ show ๋ฒํผ์ ์ถ๊ฐํ๋ค. methods ์์ฑ์๋ showLog() ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ ๋ฉ์๋ ์์๋ eventBus.$emit()์ ์ ์ธํ์ฌ triggerEventBus๋ผ๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ํ๋ ๋ก์ง์ ์ถ๊ฐํ๋ค. ์ด ์ด๋ฒคํธ๋ ๋ฐ์ํ ๋ ์์ ํ๋ ์ชฝ์ ์ธ์ ๊ฐ์ผ๋ก 100์ด๋ผ๋ ์ซ์๋ฅผ ํจ๊ป ์ ๋ฌํ๋ค.
3. ์์ ์ปดํฌ๋ํธ์ created ๋ผ์ดํ ์ฌ์ดํด ํ ์ eventBus.$on()์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๋ฐ๋ ๋ก์ง์ ์ ์ธํ๋ค. ๋ฐ์ํ ์ด๋ฒคํธ triggerEventBus๋ฅผ ์์ ํ ๋ ์์์ ์ ๋ฌํ ์ธ์ ๊ฐ 100์ด ์ฝ์์ ์ถ๋ ฅ๋๋ค.
'JavaScript > Vue' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] router URL์ ํด์ ๊ฐ(#)์ ์์ ๋ ๋ฒ (0) | 2022.06.06 |
---|---|
Vue router (0) | 2022.06.06 |
ํ์์์ ์์ ์ปดํฌ๋ํธ๋ก ์ด๋ฒคํธ ์ ๋ฌํ๊ธฐ : $emit (0) | 2022.06.05 |
์์์์ ํ์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ ์ ๋ฌํ๊ธฐ : props (0) | 2022.06.05 |
์ปดํฌ๋ํธ ๊ฐ ํต์ ๊ณผ ์ ํจ ๋ฒ์ (0) | 2022.06.05 |
๋๊ธ