40
我有我的應用程序中的情況,我需要重新加載菜單每次用戶的角色更改(一個用戶可以在幾個公司中的角色)。
我想知道什麼是解決此問題的最佳方法。
目前我做了以下內容:
app.controller('menuLoadingCtrl', function($location, $scope, authService){
$scope.model.initialRole = authService.getRole();
$scope.$watch(function(){return authService.getRole()}, function(val){
if(val && val != $scope.model.initialRole){
$scope.layout.menuSrc = 'partials/menu.html';
}
});
})
簡單的將用戶重定向到菜單裝載視圖,並從那裏,回到主功能表視圖,一旦角色加載完成。 我有這個包裹在一個函數:
$scope.layout.reloadMenu = function(){
$scope.layout.menuSrc = 'partials/menuLoading.html';
}
我在任何情況下,在打電話,我想重新加載菜單。
我想知道是否可以通過從$ rootScope上的服務廣播此事件,然後在控制器中監聽它來使此過程更加自動化。
任何想法\建議對此將不勝感激。
+1清晰簡潔。我只想補充一點,OP的代碼首先不應在控制器中包含'$ watch'或'$ broadcast',而OP應該將'authService'包裝在Angular服務中,或者更好的是,將'$ q'諾言。 –
感謝您的及時答覆。 我想這是正確的路徑,唯一的問題是,這種方式我需要調用一個特定的函數,每次我想重新加載菜單,這會導致更多的代碼,因此更多的維護。 對服務級別進行髒檢查,並廣播eveny會自動執行此操作,但不允許我在服務器請求解析時顯示加載程序。 –
另外,我需要爲控制器設置一個標誌,以便同步設置角色類型,例如登錄\註銷。 –