在mixin中使用vue-router

时间:2017-11-03 15:10:33

标签: javascript vue.js vuejs2 mixins

我的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')

但我相信必须有更好的方法。

1 个答案:

答案 0 :(得分:1)

首先定义路由器,然后在mixin中使用它。

{{1}}