Angular.js服务返回$ http成功数据

时间:2014-08-18 16:55:38

标签: angularjs angularjs-scope angular-services

在我的应用程序中,我想创建一个在后端查看的服务,以检查用户是否已登录并返回用户数据和权限。我的工厂服务如下:

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做一些事情,但我不明白它是如何工作的。

1 个答案:

答案 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}
]