我有一个扩展EventEmitter的服务。
services/service/service.js
(相对于main.js)
import { EventEmitter } from "events";
class Service extends EventEmitter {}
在Service类中,我有以下方法返回Promise:
/**
* 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;
}
};
我尝试了以下方法:
Vue.$router.push({ name: 'home'});
Vue.prototype.$router.push({ name: 'home'});
但是,我似乎发现$router
没有定义。从此服务内部定义路由器推送路由的最佳方法是什么?
答案 0 :(得分:0)
您需要使用this
关键字来访问路由器实例。试试:
this.$router.push({ name: 'home'});