我在一個AnguarJS服務中封裝了我的REST API,該服務被注入控制器。相當標準,對。現在我希望該服務攔截任何401響應,並以某種方式觸發註銷或重新登錄提示或其他內容。問題是:該服務無法訪問任何範圍。播放該錯誤的最佳方式是什麼?我提出了一些想法,但是我對Angular很陌生,想知道是否有人能告訴我這樣做的「角度」方法?AngularJS控制器/服務/ http通信
1)我可以讓服務充當我的AppCtrl可以偵聽的事件池。但是這似乎有點過於複雜。所以:
myService.on('logout', function() {
$scope.isLoggedIn = false;
});
2)我可以注入$ rootScope到服務,並讓服務直接修改isLoggedIn
。但這似乎是錯誤的。我希望明確區分服務服務數據,控制器控制範圍和指令與dom之間的差異。 3)我的每一個控制器都可以監視被拒絕的承諾,並且如果原因是401錯誤,那麼到達$範圍並將isLoggedIn
設置爲false,但顯然這個選項很糟糕。
任何幫助?
謝謝。
從哪裏註銷行動需要發生?用戶將如何顯示登錄表單或通知?是否有重定向? –
@JoshDavidMiller這是一個很好的問題。應該在哪裏發生。整個事情是一個單頁的應用程序,所以沒有重定向。我想象一個控制'ngSwitch'的範圍上的'isLoggedIn'變量,或者顯示應用程序或登錄屏幕的東西。那有意義嗎? – nicholas