我有三个部分.

Vue.js dev view

我对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的方法速记)

我怎样才能正确地做到这一点,而不从EditButton通过this.$parent.$parent改变Zonelist的状态?

推荐答案

Vue中的Non parent-child communication通常通过事件总线或状态管理系统进行处理.

在这种情况下,除非您的应用程序更复杂,否则事件总线可能就是您所需要的全部.由于您使用的是单文件组件,因此可能需要在窗口上声明总线,可能需要在主脚本中声明.

window.bus = new Vue()

然后在你的EditButton,你可以emits 事件

bus.$emit('some-event', someData)

在你的百分百里,你可以聆听它.

bus.$on('some-event', someData => this.doSomething(someData))

Vue.js相关问答推荐

如何用其他组件编译Vue模板?

Vue.js编译的render函数不起作用

如何默认打开一个v-list-group?

vue router/:param 斜杠的参数

如何在 Nativescript 应用程序中调用 axios/api 调用

无需直接 DOM 操作即可绘制d3-axis

aspnet core如何在deploy上构建webpack

Vue cli 3项目,图像路径中的动态src不起作用

Object.assign 没有正确复制

VueJS + VueRouter:有条件地禁用路由

如何从我的 Vuetify 数据表中正确更新 Vuex 状态

React.js 是否有类似 Vue.js

VueJS 禁用特定属性的react性

在 Vuejs 中计算 DOM 元素之间距离的最佳方法是什么?

如何将数据传递给 Vue.js 中的路由视图

Vue如何将动态ID与v-for循环+字符串中的字段连接起来?

Vue.js 的 $emit 和 $dispatch 有什么区别?

在子元素 vueJS.2 之间切换active类

Axios 捕获错误请求失败,状态码 404

Vue中的嵌套循环