鍍金池/ 問(wèn)答/HTML/ vue-router this.$router.push 提示錯(cuò)誤 push u

vue-router this.$router.push 提示錯(cuò)誤 push undefined

控制臺(tái)錯(cuò)誤:
Uncaught TypeError: Cannot read property 'push' of undefined


index.js:

import Vue from "vue";
import queryBar from './components/queryBar';
import cityBar from './components/cityBar';
import lineQueryMulti from './components/lineQueryMulti';
import VueRouter from 'vue-router'

Vue.config.debug = true;//開(kāi)啟錯(cuò)誤提示

Vue.use(VueRouter)

var app = new Vue({
    el: '#main', 
    components: {
        'query-bar':queryBar,
        'city-bar':cityBar,
        lineQueryMulti,
    },
    router: new VueRouter({
        mode:'hash',
        routes:[
            {path: '/queryLine/', component: lineQueryMulti},
            //{path: '/bar', component: {template:'<div>bar</div>'} }
        ]
    }),
});

queryBar.vue:

<script>
    import Vue from "vue";
    import cityBar from './cityBar';
    import axios from 'axios';

    //Vue.component('city-bar', cityBar);

    var self = this;

    export default {

        //data:function(){},下面是es6寫(xiě)法
        data () {
            return {
                busNo: '',
                stationName: '',

            }
        },

        components : {
            cityBar
        },

        methods: {

            onSubmitLine: () => {
                this.$router.push({ path: 'queryLine', query: { cityNameCn: cityNameCn.name, busNo: busNo }})
            },
        },

    }
</script>
<template>
    <div id="mainQuery">
    <!-- 聲明cityBar.vue為queryBar.vue的子組件 -->
    <city-bar :message=cityNameCn.name></city-bar>
    
    <form action="queryLine.do" method="post" class="xianluForm queryForm clearAndHideOverflow" v-on:submit.prevent="onSubmitLine">
         <input type="text" name="busNo" class="xianluInput" placeholder="請(qǐng)輸入線(xiàn)路" v-model="busNo"/>
         <button type="submit" class="submitButton">查詢(xún)</button>
    </form>

    </div>
</template>
回答
編輯回答
離殤

不要箭頭函數(shù)
methods里的方法this本來(lái)就是vue對(duì)象

2017年6月29日 14:26
編輯回答
萌二代

你在queryBar組件里面調(diào)用route,但是route里面沒(méi)有注冊(cè)queryBar組件,自然找不到。
另外,箭頭函數(shù)寫(xiě)的時(shí)候不要帶冒號(hào)了:

onSubmitStation: () => {

把冒號(hào)去掉吧

2018年2月6日 06:13
編輯回答
維他命

我懷疑是你箭頭方法的原因?qū)е碌模?/p>

() =>
2018年6月14日 05:12
編輯回答
離觴

打印一下this,不是指向的vue實(shí)例,不用箭頭函數(shù),直接function就可以了

2017年9月17日 09:46
編輯回答
局外人
queryLine: function() {
    this.$router.push({ name: 'user', params: { userId: 123 }})
}

改成箭頭函數(shù)就行

2018年7月23日 03:15