를 중지에서 이벤트를 받기를 파괴하는 아이 구성 요소

나는 부모할 수 있는 동적으로 어린이 추가 구성 요소입니다.

할 때 아이는 구성 요소를 추가 산에 등록에 대한 수신기에 이벤트

EventBus.$on('content-type-saving', function() {
    logic here...
}

문제 때는 구성 요소를 삭제한에서 부모에서 제거하여 배열의 아이 구성 요소는 심지어 여전히 발생하고 내부에 코드를 실행합니다.

되지 않도록 하려면 어떻게 합니까이에서 일어나고 있는가? 이

    beforeDestroy() {
      //do something before destroying vue instance
        EventBus.$off('content-type-saving')
    }

그러나는 꺼져 있는 이벤트에 대한 다른 모든 아이성 뿐만 아니라 그래서 그 사람들은 여전히 살 것이라 하지 않을 논리는 물건을 더 이상 때문에 내가 꺼져 있는 이벤트에 파괴되는 아이 구성 요소입니다.

내가 생각하는 경우 내가 꺼져 있는 이벤트는 것이 듣기만 영향을 미치는 이벤트에 대한 아이는 구성 요소를 켜지는 이벤트에 대한 모든 아이 구성 요소입니다.

어떻게 막을 수 있습니 파괴되는 구성 요소에서 반응에는 이벤트가 필요하세요?

해결책

전화할 때에는오프$으로 그냥 이벤트의 이름을,모든청취자 제거됩이벤트를 지정합니다.

대신,제거하려면 이벤트 구성 요소에 대한 의견을 듣는 것입니다. 구성 요소는 다음과 같이 보일 것이다:

const component = {
  methods:{
    listener(){
      //do something on event
    }
  },
  created(){
    EventBus.$on('content-type-saving', this.listener)
  },
  beforeDestroy(){
    EventBus.$off('content-type-saving', this.listener)
  }
}

이렇게 하면 특정 수신기에 대한 현재 구성 요소입니다.

해설 (3)

나는 당신이 상상 렌더링의 구성품으로 어떤 종류의 반복 그들에게 어떤 종류의 인덱스입니다. 만 내 머리 위로,당신이 무엇을 할 수 있는가를 밀어 지수를 배열한 다음에 eventBus.$에 기능을 테스트하십시오의 인덱스 구성 요소가 존재하지에 배열(부모성분)및 화재 논리지 않는 경우't.

EventBus.$emit('content-type-saving', index);

EventBus.$on('content-type-saving', function(index) {
    if(this.deletedComponentArray.indexOf(index) == -1){
        //execute logic
    }
}

는's 하는 방법 중 하나 피부는 고양이입니다. 나는'm 있는 다른 방법으로하고 있습니다.

해설 (0)