在使用 EventBus 进行方法传递时,可以使用订阅者模式来实现。以下是一个简单的示例:

首先,在你的项目中引入 EventBus 库。可以使用以下命令在项目中添加 EventBus 依赖:

npm install eventbusjs

然后,在需要传递方法的两个页面中,分别创建一个 EventBus 实例,并将其导出。

在 PageA 中:

import EventBus from 'eventbusjs';

const eventBus = new EventBus();

export default {
  data() {
    return {
      eventBus: eventBus
    };
  },
  methods: {
    // 在 PageA 中定义需要传递的方法
    methodToBeTransferred() {
      console.log('Method transferred from PageA');
    }
  },
  created() {
    // 在 PageA 中订阅方法传递事件
    this.eventBus.addEventListener('methodTransfer', this.methodToBeTransferred);
  },
  beforeDestroy() {
    // 在 PageA 中取消订阅方法传递事件
    this.eventBus.removeEventListener('methodTransfer', this.methodToBeTransferred);
  }
};

在 PageB 中:

import EventBus from 'eventbusjs';

const eventBus = new EventBus();

export default {
  data() {
    return {
      eventBus: eventBus
    };
  },
  methods: {
    // 在 PageB 中定义需要传递的方法
    methodToBeTransferred() {
      console.log('Method transferred from PageB');
    },
    // 在 PageB 中触发方法传递事件
    triggerMethodTransfer() {
      this.eventBus.dispatchEvent('methodTransfer');
    }
  },
  created() {
    // 在 PageB 中订阅方法传递事件
    this.eventBus.addEventListener('methodTransfer', this.methodToBeTransferred);
  },
  beforeDestroy() {
    // 在 PageB 中取消订阅方法传递事件
    this.eventBus.removeEventListener('methodTransfer', this.methodToBeTransferred);
  }
};

这样,当在 PageB 页面中调用 triggerMethodTransfer 方法时,就会触发 PageA 中的 methodToBeTransferred 方法,从而实现了方法的传递。

需要注意的是,这里的 EventBus 是在单个页面中创建的,用于在该页面内进行事件的订阅和触发。如果需要在全局范围内传递方法,可以将 EventBus 实例放在一个全局的对象中,然后在各个页面中引用该对象即可。

Vue.js 页面间方法传递:使用 EventBus 实现

原文地址: https://www.cveoy.top/t/topic/fTEb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录