在AngularJS中初始化时将全局函数和数据附加到$ rootScope

ale*_*ngn 16 javascript angularjs

我希望在我第一次启动AngularJS应用程序时或每次刷新页面时都有一个"全局函数".

此函数将调用我的服务器$http.get()以获取使用我的应用程序所需的全局信息.我需要访问$rootScope此功能.在此之后,只有在此请求完成后,我才使用app.config$routeProvider.when()加载好的控制器.

app.config(['$routeProvider', function($routeProvider) {
    $routeProvider
        .when('/', 
        {
            /**/
        });
}]);
Run Code Online (Sandbox Code Playgroud)

我不希望应用程序在此操作完成之前执行某些操作.所以我想我必须使用"解决方案",但我真的不知道如何使用它.

任何的想法?

谢谢!

Ken*_*nne 23

这不是解决您问题的最佳方法,但这是针对您的问题提出的解决方案.

内部的任何内容run(...)都将在初始化时运行.

angular.module('fooApp').run(['$http', '$rootScope' function($http, $rootScope) {
 $http.get(...).success(function(response) {
     $rootScope.somedata = response;
 });

 $rootScope.globalFn = function() {
   alert('This function is available in all scopes, and views');
 }

}]);
Run Code Online (Sandbox Code Playgroud)

现在,您可以在所有视图中触发警报ng-click="globalFn()".

请注意,如果未明确继承,使用新隔离范围的指令将无法访问此数据: $scope.inheritedGlobalFn = $rootScope.globalFn