Vue.js 访问Vue。$router在外部;服务“;班

Vue.js 访问Vue。$router在外部;服务“;班,vue.js,vue-router,Vue.js,Vue Router,我有一个扩展EventEmitter的服务 services/service/service.js(相对于main.js) 在服务类中,我有以下返回承诺的方法: /** * Method to fetch the Active Survey by "surveySlug": */ fetchActiveSurvey(serviceSlug) { return new Promise((resolve, reject) => { axios.get(`

我有一个扩展EventEmitter的服务

services/service/service.js
(相对于main.js)

在服务类中,我有以下返回承诺的方法:

  /**
   * Method to fetch the Active Survey by "surveySlug":
   */
  fetchActiveSurvey(serviceSlug) {
    return new Promise((resolve, reject) => {
      axios.get(`${this.baseURL}/service/${serviceSlug}`, { headers: { Authorization: AuthStr } }).then(response => {
        resolve(response.data);
      }).catch(error => {
        if (error.response && error.response.data.status != 200) {
          Vue.$router.push({ name: 'home'});
        }
      });
    });
  }

我还将通常的
routes.js
main.js
放在同一个目录中,运行良好

然后将服务建立为插件:

import Service from "../services/service/service"; // <= Refrences `service.js`

export default {
  install(Vue) {
    Vue.prototype.$service = Service;
  }
};

从“./services/Service/Service”导入服务 您需要使用
this
关键字来访问路由器实例。尝试:

this.$router.push({ name: 'home'});

您需要使用
this
关键字来访问路由器实例。尝试:

this.$router.push({ name: 'home'});

此。
在服务内部将不起作用<代码>此。
是服务类。听上去不粗鲁,我甚至不打算尝试这个是否可以像导入eventEmitter一样导入路由器实例并在服务中调用它?是的,可能。我可以使用
从'@/router'导入路由器它是同一个路由器实例,对吗?或者这真的很重要吗?是的,我认为这将引用回同一路由器实例,因为@/router将指向index.jsYeh,worked。不需要这个。路由器。推送()路径。只需在服务内部使用router.push()
这个。
,将无法工作<代码>此。
是服务类。听上去不粗鲁,我甚至不打算尝试这个是否可以像导入eventEmitter一样导入路由器实例并在服务中调用它?是的,可能。我可以使用
从'@/router'导入路由器它是同一个路由器实例,对吗?或者这真的很重要吗?是的,我认为这将引用回同一路由器实例,因为@/router将指向index.jsYeh,worked。不需要这个。路由器。推送()路径。只是路由器