私は3つのコンポーネントを持っています。Vue.jsイベントをコンポーネントチェーンまで伝播する方法は?
私はNPMからそれを持っている原因Datatable
コンポーネントが何をするかに影響を与えません。
今度はEditButton
からZonelist
にイベントを送信したいと思います。
Zonelist
コンポーネント:
<template>
<datatable :columns="table_columns" :data="table_rows" filterable paginate v-on:remove="removeItem"></datatable>
</template>
<script>
import datatable from 'vuejs-datatable';
import moment from 'moment';
export default {
data() {
return {
table_columns: [
{label: "Zone", component: 'ZoneLink'},
{label: "Last updated", callback (row) {
let locale = $('html').closest('[lang]').attr('lang') || 'en';
moment.locale(locale);
return moment(row.last_updated).format('D. MMM YYYY');
}},
{label: '', component: 'EditButton'}
],
table_rows: [
{
"name": "xyz.de",
"last_updated": "2017-10-21 17:29:50"
}
],
form: {
name: '',
errors: []
}
};
},
components: {
datatable
},
methods: {
removeItem (item) {
this.table_rows.forEach((value, index, array) => {
if (value.name === item) {
Vue.delete(array, index);
}
});
}
}
}
</script>
今私のEditButton
コンポーネント$emit()
のパラメータを持つremove
イベント。
しかし、何も起こりません。だから、私はvueがリスナーを見つけることができないと思う。
(私はここES6からメソッドの短縮形を使用しています)
どのように私はEditButton
からthis.$parent.$parent
経由Zonelist
の状態を突然変異させずに適切にこれを行うことができますか?