programing

Vue 2.0 인스턴스가 vue-router 구성 요소에서 내보내는 이벤트를 수신하지 않음

sourcetip 2022. 8. 15. 10:16
반응형

Vue 2.0 인스턴스가 vue-router 구성 요소에서 내보내는 이벤트를 수신하지 않음

Vue 2.0-rc.6(최신)과 Vue-router 2.0-rc.5(최신)를 사용하고 있습니다.

하려고 했는데this.$emit('custom-event')라우터의 컴포넌트 중 하나에 포함되어 있습니다.this.$on('custom-event', () => { console.log('I heard an event') })제 Vue 인스턴스에서 이벤트를 듣고 있지 않았습니다.라우터 컴포넌트 자체는 이벤트를 수신하고 있었지만 Vue 인스턴스는 수신하지 않았습니다.

감 잡히는 게 없어요?

jsfiddle을 보세요.

$emit에서 이벤트는 부모 인스턴스로 전파되지 않습니다.부모는 템플릿의 컴포넌트에서 이를 적극적으로 수신해야 합니다.

<router-view @eventname="callbackMethod" />

http://forum.vuejs.org/topic/5235/vue-2-0-instance-is-not-hearing-events-emitted-by-vue-router-components/2의 LinusBorg가 $1200에서 이벤트가 부모 인스턴스로 전파되지 않음을 지적해 주셔서 감사합니다.

하지만 LinusBorg가 제안한 솔루션을 사용하여 실행하지는 못했습니다.대신, 나는 그것을 하는 것으로 일을 만들었다.this.$router.app.$emit('eventname')

워처를 사용하면 같은 것을 얻을 수 있습니다.즉, 루트가 갱신되면 워처를 통해 이벤트를 잡을 수 있습니다.

    watch: {
        '$route': function(to, from) {
              console.log('To :', to.path); // current route
              console.log('from:', from.path); // old route
         }
    }

언급URL : https://stackoverflow.com/questions/39486443/vue-2-0-instance-is-not-hearing-events-emitted-by-vue-router-components

반응형