vue2使用组件中的$ emit调用父函数

Pds*_*Ink 3 methods emit vuejs2

我试图从子组件调用父方法,但它似乎不起作用..这里的代码:

的index.html

<div class="percorso"v-on:removeall="pathlengthTozero()">
</div>
Run Code Online (Sandbox Code Playgroud)

零件

Vue.component('lista-percorso', {
template:`
<div class="col-lg-2 col-xs-2">
    <div class="removeall pull-right" v-on:click="removeall()"></div>
</div>`,

    methods:{
    removeall : function(){
        this.listaSelezionati = [];
        this.$emit('removeall');
    }
}
Run Code Online (Sandbox Code Playgroud)

父方法

    pathlengthTozero : function(){
       il_tuo_percorso = [''];
    }
Run Code Online (Sandbox Code Playgroud)

似乎"pathlengthTozero"没有调用emit,这是正确的使用方法吗?

Mut*_*ran 8

你需要将它放到如下所示v-on:removeall="pathlengthTozero"的组件<lista-percorso>中,

<lista-percorso v-on:removeall="pathlengthTozero"></lista-percorso>
Run Code Online (Sandbox Code Playgroud)

并且this.$emit将能够触发父类的方法.

示例演示:

Vue.component('lista-percorso', {
template:`
<div class="col-lg-2 col-xs-2">
    <div class="removeall pull-right" v-on:click="removeall()">xxxxxxxxxx</div>
</div>`,

    methods:{
    removeall : function(){
        this.listaSelezionati = [];
        this.$emit('removeall');
    }
  }
})



var App = new Vue({
  el: '#app',
  methods:{
    pathlengthTozero : function(){
      alert('hello'); 
      il_tuo_percorso = [''];
    }
  }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/vue"></script>

<div id="app">
  <div class="percorso" ></div>

  <lista-percorso v-on:removeall="pathlengthTozero"></lista-percorso>
</div>
Run Code Online (Sandbox Code Playgroud)