鍍金池/ 問答/Linux  HTML/ 為什么我用$router.push路由跳轉無效,而是跳到當前頁

為什么我用$router.push路由跳轉無效,而是跳到當前頁

const klConfig = require('../../js/config');
    const klUtil = require('../../js/utils');
    const restApi = require('../../js/request.api');
    var vm;
    export default {
        name: 'resetPassword',
        data() {
            return {
                password:'',
                isFull:false,
                passwordType: 'password',
                
            }
        },
        beforeCreate() {

            vm = this;
        },
        created() {
            vm.changePasswordType = function () { //切換密碼顯示類型
                if(vm.passwordType == 'password') {
                    vm.passwordType = 'text';
                }else {
                    vm.passwordType = 'password';
                }
            }
            
            vm.checkInputContent = function () { //檢測密碼輸入框是否都有值
                
                setInterval(function(){
                    if(vm.password) {
                        vm.isFull = true;
                    }else {
                        vm.isFull = false;
                    }    
                },100);                
            }
            vm.checkInputContent();
            
            vm.resetPassword = function(){
                if(!klUtil.isPassword(vm.password)) {
                    klUtil.addWarning('密碼格式不正確!');
                    return;
                }
                var data = {};
//              data.id = this.$router.history.current.params.id;
                data.id = vm.$route.params.id
                data.password = vm.password;
                restApi.findPassword.resetPassword(data).done(function() {
                    vm.$router.push({name:'login'});
                }).fail(function(res) {
                    klUtil.showErrorData(res);
                });
            }
        }

    }

附上代碼
里面的vm就是vue對象
當我單獨使用$router.push的時候是可以跳轉的,但是,

restApi.findPassword.resetPassword(data).done(function() {
                    vm.$router.push({name:'login'});
                }).fail(function(res) {
                    klUtil.showErrorData(res);
                });

放在這個方法里面就跳轉失敗了
不知道是什么原因

回答
編輯回答
爆扎

vm this指向不是vue這個實例 在this指向錯誤的問題

在.done的回調它怎么可能指向實例呢 你在看看問題

2018年2月6日 01:28
編輯回答
練命

為什么不把方法寫在methods里?

2017年8月29日 07:27
編輯回答
陌上花

解決了,在檢查密碼規(guī)則那里出錯了

2018年6月6日 14:00