Event Bus

2021. 2. 8. 14:11·개발중/Vue.js
728x90
반응형

지금 내가 구현하고자 하는 코드는 아래  두가지 컴포넌트  가 존재하는데

 

첫번째는  리스트  이고

 

두번째는  입력창  이다.

 

두번째 입력창에서 Data를 Insert 한 후에 popup 창이 사라지면서

첫번째 화면에서는  새롭게 Data를 loading  해야 한다.

 

근데 서로 다른 컴포넌트에서 구현한 메소드이기 때문에 고민이 있었다.

 

 Insert 를 해준 후에   리스트를 가지고 오는 Method 를 호출  하는 방법이 최선이기 때문에.

 

이벤트 버스를 이용해서  형제 요소가 가지고 있는 메소드를 호출하는 방법  을 찾았다.

 


 

1 ) main.js

Vue.prototype.$EventBus = new Vue()

 

위에 코드를 main.js 에 추가 해준다.

 

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import common from '@/assets/js/common.js'

Vue.config.productionTip = false
Vue.use(common)
Vue.prototype.$EventBus = new Vue()

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

 

2 ) Button Click

<div class="_popup_btnbox"><button class="_popup_btn" @click="dataInsert()"> 등 록 </button></div>

 

버튼을 클릭하면 dataInsert() 함수가 호출이 된다.

 

이 함수는 해당 컴포넌트의 method 이다.


 

3 ) 해당 컴포넌트에서 형제 요소의 method 호출 방법

 dataInsert () {
      const params = new URLSearchParams()
      var channel = new Array(0)

      if (this.checkAll === true) {
        channel.push('채널')
        channel.push('카페')
        channel.push('커뮤니티')
      } else {
        if (this.check1 === true) { channel.push('블로그') }
        if (this.check2 === true) { channel.push('카페') }
        if (this.check3 === true) { channel.push('커뮤니티') }
      }

      params.append('phrase', this.phrase)
      params.append('channel', channel.join(','))

      axios.post('/dataInsert', params)
        .then((result) => {
          alert(result.data.message)
          this.$close_popup('.pop-layer')
          this.$EventBus.$emit('push-msg', result.data.message)
        })
    }

 

 

dataInsert() 함수는 위에처럼 구성이 되있는데 

 

this.$EventBus.$emit('push-msg', result.data.message)

 

이 코드에서  형제 요소의 Method를 호출  한다.


 

4 ) 호출 하는 쪽 ( .$emit ) vs 호출 당하는 쪽 ( .$on )

 


😏 이벤트 버스를 사용해서 호출 성공 😏


 

참고사이트

 

webruden.tistory.com/109

 

 

vue.js Event Bus를 통해 컴포넌트간 통신하기 (Event Bus in Vue.js)

✨ 들어가며 vue.js에서는 일반적으로 부모/자식간의 이벤트 통신하는 방식을 사용합니다. 하지만, 경우에 따라서는 서로 관련없는 독립적인 컴포넌트끼리 이벤트를 통신해야할 때가 생깁니다.

webruden.tistory.com

jsdev.kr/t/vue-js-event-bus/2926

 

728x90
반응형
저작자표시 (새창열림)

'개발중 > Vue.js' 카테고리의 다른 글

이클립스에서 vue 파일 생성하는 방법  (0) 2021.03.02
이클립스에서 vue import  (0) 2021.03.02
VueJs Select  (0) 2021.02.08
VueJs Insert  (0) 2021.02.08
VueJS View → Controller Data 전달  (0) 2021.02.08
'개발중/Vue.js' 카테고리의 다른 글
  • 이클립스에서 vue 파일 생성하는 방법
  • 이클립스에서 vue import
  • VueJs Select
  • VueJs Insert
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (939)
      • 개발중 (635)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (88)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (18)
        • 기록 (3)
        • 캐글 스터디 (3)
        • R (12)
      • 논문 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    docker
    리눅스 마스터 1급 정리
    파이썬
    리눅스 마스터 1급
    springboot
    파이썬 알고리즘
    네트워크 관리사 요약
    Git 저장소
    java
    네트워크 관리사
    네트워크 관리사 학점
    BackendDevelopment
    REST API
    VUE
    스프링
    네트워크 관리사 2급
    리눅스 1급 요약
    네트워크 관리사 자격증
    네트워크 관리사 실기
    리눅스 마스터 요약
    네트워크 관리사 2급 실기
    쿠버네티스 스터디
    리눅스 마스터
    jpa
    쿠버네티스
    redis
    git
    Spring
    알고리즘
    리눅스 마스터 1급 요약
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
Event Bus
상단으로

티스토리툴바