在angular的運行塊中,我在$ rootScope上設置了一個屬性,但是當控制器執行時,$ rootScope上不存在該屬性。
當應用程序啓動時,在調試器中,我看到「adal:loginSuccess」處理程序得到執行,$ rootScope.isAdmin將set設置爲「true」,但是當控制器開始執行$ rootScope.isAdmin時,並不存在於$ rootScope上。爲什麼? 下面是我的代碼
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