angleの実行ブロックでは、$ rootScopeに1つのプロパティを設定していますが、コントローラがそのプロパティを実行すると$ rootScopeには存在しません。
アプリケーションが起動すると、$ rootScope.isAdminが実行されているコントローラが$ rootScopeに存在しない場合、デバッガでは "adal:loginSuccess"ハンドラが実行され、$ rootScope.isAdminが "true"になります。どうして?アプリが 'のmymodule' という名前のされるようにあなたは、var main = angular.module('mymodule', [...])
を持っているので以下 は
app.js
var main = angular.module('mymodule', [
'ngAnimate','ngRoute','Mycontrollers','AdalAngular'...
]);
main.config(['$httpProvider','adalAuthenticationServiceProvider', function ($httpProvider,adalProvider) {
adalProvider.init(
{
// config Azure Client ID Here
},
$httpProvider
);
}]);
main.run(["$rootScope", "$state", "API", "usSpinnerService",
function ($rootScope, $state, API, usSpinnerService,) {
$rootScope.$on("adal:loginSuccess", function() {
$rootScope.isAdmin = user.isAdmin;
});
}]);
Controller.js
angular.module('Mycontrollers', [])
.controller('HeaderCtrl', ['$rootScope','$scope', 'adalAuthenticationService', function ($rootScope, $scope, adalAuthenticationService) {
//$rootScope.isAdmin is set in angular's run block above
//however $rootScope.isAdmin does not exists here, WHY?????
}])
"adal:loginSuccess"イベントハンドラがコントローラの後に実行されている可能性があります – rob
コントローラの起動を実行する前にadal:logingSuccessが最初に発生するようにするにはどうすればよいですか? – LP13
他の何かがロードされるまでコントローラがロードされないようにするには、ルータ 'resolve' https://docs.angularjs.org/api/ngRoute/provider/$routeProvider – rob