为什么我用$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);
                });

放在这个方法里面就跳转失败了
不知道是什么原因

阅读 9.1k
3 个回答

解决了,在检查密码规则那里出错了

vm this指向不是vue这个实例 在this指向错误的问题

在.done的回调它怎么可能指向实例呢 你在看看问题

为什么不把方法写在methods里?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题