我已经将我的 REST API 封装在一个注入控制器的 AnguarJS 服务中。很标准,对。现在我希望该服务拦截任何 401 响应并以某种方式触发注销或重新登录提示或其他内容。问题是:该服务无权访问任何范围。广播该错误的最佳方法是什么?我提出了一些想法,但我是 Angular 的新手,想知道是否有人可以告诉我这样做的“Angular”方式?
1)我可以让服务充当我的 AppCtrl 可以监听的事件池。但这似乎有点过于复杂。所以:
myService.on('logout', function() {
$scope.isLoggedIn = false;
});
2)我可以将 $rootScope 注入服务,并直接修改服务isLoggedIn
。但这似乎完全是错误的。我想明确区分服务服务数据、控制器控制范围以及指令与 dom 混在一起的地方。
3)我的每个控制器都可以监视一个被拒绝的承诺,如果原因是 401 错误,然后到达 $scope 并设置isLoggedIn
为 false,但这个选项显然很糟糕。
有什么帮助吗?
谢谢。