我知道我可以根据路由解决控制器的某些依赖关系。但是,我有一个我一直想解决的服务:当前用户。
该服务基本上为当前用户(url类似于/api/user/me
)向服务器发出一个get请求,并返回一个带有用户ID、名称等的对象。这当前被缓存并返回承诺,所以无论我想在哪里使用它,我都必须做类似的事情:
CurrentUser.getCurrentUser().then(function(user) {
// use user.id here
});
为已加载的数据创建额外的、不必要的嵌套和回调层。有没有一种好方法可以全局预加载用户,以便我可以在任何地方使用它而无需等待承诺?
沿着我上面链接的路线解决方案,除了它应该适用于所有路线和可能的服务。
我画出这样的结果:
// somewhere
AlwaysResolveThisBeforeDoingSomething(UserService.resolve);
// In my controller
.controller('CurrentUserCtrl', function ($scope, $http, CurrentUser) {
// CurrentUser is an initialized user containing id, name etc.