我有兩個單獨的控制器:AuthController和NavController。 AuthController負責運行註冊/登錄表單,NavController負責顯示導航欄,我想顯示當前用戶名(如果有人登錄)。最後,我有服務「auth」處理所有註冊/登錄的東西刷新控制器中服務的數據
身份驗證服務具有這樣的功能:
auth.currentUser = function() {
if (auth.isLoggedIn()) {
var token = auth.getToken();
var payload = this.decodeUsername(token);
return payload.username;
}
};
和NavController看起來是這樣的:
app.controller('NavController', ['$scope', 'auth',
function($scope, auth) {
$scope.isLoggedIn = auth.isLoggedIn;
$scope.logOut = auth.logOut;
$scope.currentUser = auth.currentUser();
}
]);
這樣我就可以顯示當前用戶名,但是如果用戶只需登錄NavController「不知道」塔沒有任何改變。我嘗試過使用事件,但是這兩個控制器沒有父子關係。我應該將它們包裝在一個父控制器中,並執行「AuthController-emit-> SuperController-broadcast-> NavController」,還是有更好的方法來在那裏交流兩個控制器?
可能重複[Angular:控制器間共享數據](http://stackoverflow.com/questions/21919962/angular-share-data-between-controllers) – isherwood
@isherwood AFAIK這將只適用於服務屬性,但我在這裏使用了getter方法 – tauruss85