我的main.js
设置如下:
import Vue from 'vue'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource';
Vue.config.productionTip = false;
Vue.use(VueRouter);
Vue.use(VueResource);
Vue.mixin({
methods: {
get_req: function(url) {
Vue.http.get(url, {
before(request) {
// before_callback(request);
}
}).then(response => {
// success_callback(response);
}, response => {
if(response.status == 404) {
Vue.router.push({name: '404'}); // <--- ERROR HERE
}
}).then(response => {
// always_callback(response);
});
}
}
});
const router = new VueRouter({
routes: [
{
path: '/',
component: Home,
meta: {page_title: 'Home'}
},
// ...
]
});
new Vue({
el: '#app',
template: '<App/>',
components: { App },
router: router
});
错误是:
TypeError:无法读取属性&#39; push&#39;未定义的
所以,我知道在调用mixin方法时没有定义Vue.router
,我知道解决这个问题的方法是将路由器本身作为参数传递给this.get_req(this.$router, 'http://example.com/users/5')
。
但我相信必须有更好的方法。
答案 0 :(得分:1)
首先定义路由器,然后在mixin中使用它。
{{1}}