Vue路由器链接和自定义事件

时间:2018-11-07 23:07:47

标签: javascript vue.js vuejs2 vue-router

我正在尝试在vue中的路由器链接上创建自定义事件,但似乎没有用。我想做这样的事情-

父母-

<Home @customEvent="myEventHandler" />

脚本-

export default {
methods: {
    myEventHandler() {
        console.log('yay')
    }
}

孩子

export default {
...
mounted() {
    axios.get('api/link').then(res => {
        this.posts = res.data;
        this.$emit('customEvent')
    }
}

使用常规组件创建yay的日志效果很好,但是当我尝试执行类似操作时-

<router-link to='/home' @customEvent="myEventHandler">Home</router-link>

它似乎不起作用。您如何从使用router-link创建的组件中监听自定义事件?

预先感谢...

1 个答案:

答案 0 :(得分:1)

有可能。您只能$emit个事件,从孩子到父母,不能router-view个事件,在两个不同的路由器之间

  

从孩子到父母的发射事件

     

enter image description here

     

无法在2条不同的路线之间发出事件:

     

enter image description here

要解决此问题,可以为组件A和组件B创建一个包装器组件,然后使用<a md-icon-button [routerLink]="['./new']" queryParamsHandling="merge" mdTooltip="Add Document" [disabled]="isAddButtonDisabled(selectedAssociation)"> <md-icon>add</md-icon> </a> 接收事件