[英]Angular.js service return $http success data
在我的應用程序中,我想創建一個在后端查看的服務,以檢查用戶是否已登錄並返回用戶數據和特權。 我的工廠服務如下所示:
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做些事情,但我不知道它是如何工作的。
您可以將邏輯放入服務本身。 您將必須使用Promise將成功數據返回到控制器。 因此,對於控制器,將是這樣的:
Session.getSession().then(function(data){
$scope.admin = data;
});
您將處理服務中的錯誤。 請注意,這是偽代碼。
app.factory 'Session', ['$http', ($http) ->
getSession: ->
return $http.get("/admin/session")
.success(data){}
.error(){ //... redirect user}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.