javascript - Angular ui-router 中的$state.go()报错?

查看:164
本文介绍了javascript - Angular ui-router 中的$state.go()报错?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

当我不在回调函数中使用$state.go时,我的$state.go()正常工作

当我写了一个service,并把$state.go()写入success函数中时就会报错。

Cannot read property 'go' of undefined

下面是部分代码


$scope.logOut = function($state) {
    logOutService.logout().success(function() {
        alert('hahahhahah');
        ls.remove("userdata");
        $state.go('login');// 这一句报错
        $rootScope.isLogin = false;
    }).error(function() {
      alert('登出失败');
    })
}

有没有遇到相似问题的? 我在stackoverflow上找到的答案尝试了都没什么用。

解决方案

你需要在controller里注入$state服务,在controller内都调用注入的$state,而不是再声明一次。
要理解这点,你可能需要了解一下什么叫做依赖注入。
并且,似乎你需要理解Javascript中变量的作用域,或者说是闭包的概念。被注入的$state的作用域,涵盖整个Controller,包括Controller内的各种函数内。
从本质上说,你在函数中声明了一个名为$state的参数,也就是覆盖了外部作用域那个被你注入的$state,所以在函数内部用$state就会出问题。解决方法就是不要声明这个参数。

这篇关于javascript - Angular ui-router 中的$state.go()报错?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆