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上找到的答案尝试了都没什么用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你需要在controller里注入$state服务,在controller内都调用注入的$state,而不是再声明一次。
要理解这点,你可能需要了解一下什么叫做“依赖注入”。
并且,似乎你需要理解Javascript中变量的作用域,或者说是闭包的概念。被注入的$state的作用域,涵盖整个Controller,包括Controller内的各种函数内。
从本质上说,你在函数中声明了一个名为$state的参数,也就是覆盖了外部作用域那个被你注入的$state,所以在函数内部用$state就会出问题。解决方法就是不要声明这个参数。
你的
success
回调里干嘛要重置$state
变量啊?把这个变量去掉,再试试
补充
综上所述,我恐怕你并没玩明白依赖注入,可以看看跟我手写依赖注入