在我的应用程序中,我想创建一个在后端查看的服务,以检查用户是否已登录并返回用户数据和权限。我的工厂服务如下:
app.factory 'Session', ['$http', ($http) ->
getSession: ->
$http.get("/admin/session")
]
现在,我在下面显示的控制器中处理服务的成功和错误。
$scope.session = Session.getSession()
.success((data) ->
# Set the logged in user
$scope.admin = data
# Limit any privileges
)
.error((data) ->
# Logged in user not found so rediret to login screen
window.location = "/user/login"
)
我的问题是我需要在很多不同的控制器中重复相同的代码。有没有更好的方法来处理这个?我想我可能需要用$ rootScope做一些事情,但我不明白它是如何工作的。
答案 0 :(得分:1)
您可以将逻辑放在服务中。您必须使用promises将成功数据返回给控制器。所以对于控制器来说,它将是这样的:
Session.getSession().then(function(data){
$scope.admin = data;
});
您将在服务中处理错误。请注意,这是伪代码。
app.factory 'Session', ['$http', ($http) ->
getSession: ->
return $http.get("/admin/session")
.success(data){}
.error(){ //... redirect user}
]