【发布时间】:2017-09-19 10:49:29
【问题描述】:
我确实有三个组件。
我对 Datatable 组件的作用没有任何影响,因为我从 npm 获得它。
现在我想从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 的方法简写)
如果不通过this.$parent.$parent 从EditButton 改变Zonelist 的状态,我怎么能正确地做到这一点?
【问题讨论】:
标签: javascript vue.js vuejs2 vue-component