Vue.js : 如何从布局事件中调用页面方法?

Vue.js : How to call a method of page from layout event?

在我的设计中,页面布局有侧边栏和页面显示图片库 在初始加载页面加载没有过滤器的所有图像 单击侧边栏中的按钮时,页面应显示过滤后的图像。 我可以在侧边栏的点击事件中从 API 服务器获得过滤后的响应,但无法调用页面的图像加载功能 如何在侧边栏的点击事件中调用页面的加载功能? 提前谢谢你

您可以使用事件总线。

使用以下代码创建一个js文件(可以是EventBusLayout.js):

import Vue from 'vue';
export let EventBusLayout = new Vue();

然后在您的 layout/sidebar 组件中:

<script>

import { EventBusLayout } from './EventBusLayout.js';

export default {

  methods: {
    sidebarClick() {
       EventBusLayout.$emit('sidebarclick');
    }
  }

}

</script>

在您的页面组件中:

<script>

import { EventBusLayout } from './EventBusLayout.js';

export default {

  beforeMount() {
    EventBusLayout.$on('sidebarclick',this.myCallbackFunction);
  },

  beforeDestroy() {
    EventBusLayout.$off('sidebarclick',this.myCallbackFunction);
  }

  methods: {
    myCallbackFunction() {
       /* do here your stuffs */
    }
  }

}

</script>