2017-02-07 27 views
6

Ja próbuje dodać niestandardowy obsługi InlineButtonClickHandler się do <router-link> komponentu click imprezy, tak że mogę emitować zwyczaj appSidebarInlineButtonClick wydarzenie.Dodaj do <router-link> detektor zdarzeń za pomocą komponentu „v-on:” Dyrektywa - VueJS

Ale mój kod nie działa. Co ja robię źle?

<template> 
    <router-link :to="to" @click="InlineButtonClickHandler"> 
    {{ name }} 
    </router-link> 
</template> 

<script type="text/babel"> 
export default { 
    props: { 
    to: { type: Object, required: true }, 
    name: { type: String, required: true } 
    }, 
    methods: { 
    InlineButtonClickHandler(event) { 
     this.$emit('appSidebarInlineButtonClick'); 
    } 
    } 
} 
</script> 
+0

Czy można wyświetlić dziennik konsoli? – samayo

Odpowiedz

13

Trzeba dodać .native modifier:

<router-link 
    :to="to" 
    @click.native="InlineButtonClickHandler" 
> 
    {{name}} 
</router-link> 

To słuchać rodzimej kliknij zdarzenie elementu korzenia Komponent router-link.

+0

pracuje dla mnie ... Dzięki –

0

miłym rozwiązaniem byłoby:

<a v-link='{name: "home"}' v-on:click.capture='InlineButtonClickHandler'>Home</a>

+0

Dziękuję za odpowiedź. Ale zgodnie z dokumentacją to rozwiązanie zostało zastąpione w VueJs V2: [link do dokumentu źródłowego ...] (https://vuejs.org/v2/guide/migration-vue-router.html#v-link-replaced) –

0
<router-link:to="to"> 
    <span @click="InlineButtonClickHandler">{{name}}</span> 
</router-link> 

Może możesz spróbować.