Vue.js 访问Vue。$router在外部;服务“;班
我有一个扩展EventEmitter的服务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(`
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。不需要这个。路由器。推送()路径。只是路由器