如何在angularjs中启动全局数据

如何在angularjs中启动全局数据,angularjs,Angularjs,在我的应用程序中,有一些数据将被许多视图或控制器使用。您可以认为它们是一些数据字典,比如状态映射定义 现在,我的解决方案是将它们放入AppContoller中,并将它们放入$scope或$rootScope中。(AppController中的$scope是所有控制器的父作用域,因此所有控制器中的数据都可以访问。) 但问题是,它将使用$resource异步启动,因此它们可能还没有准备好使用。因为所有数据都将使用$resource获取。有时,其他数据是在必要的全局数据之前获得的 现在在使用全局数据的

在我的应用程序中,有一些数据将被许多视图或控制器使用。您可以认为它们是一些数据字典,比如状态映射定义

现在,我的解决方案是将它们放入AppContoller中,并将它们放入$scope或$rootScope中。(AppController中的$scope是所有控制器的父作用域,因此所有控制器中的数据都可以访问。)

但问题是,它将使用$resource异步启动,因此它们可能还没有准备好使用。因为所有数据都将使用$resource获取。有时,其他数据是在必要的全局数据之前获得的

现在在使用全局数据的控制器中,我必须检查全局数据,如果它没有准备好,稍后调用初始化函数并超时


所以,我的问题是,是否有更好的解决方案来初始化所有应用程序使用的必要数据?

好吧,据我所知,您需要确保当您的应用程序启动时,您从服务器获取的一些数据可以在整个应用程序中全局使用

我的建议是采用以下方法:

  • 创建用于保存全局数据的服务

    var app = angular.module('myApp', []);
    
    app.service('constantService', function() {
    
        // All your constants declared here.
    
    
    });
    
  • 现在,在app.run方法中,进行ajax调用或执行任何您想执行的操作,并初始化服务中的所有常量

    app.run(function($rootScope, $http, constantService) {
    
        /*
    
            Make an ajax call here and fetch all the Constants from your server.
    
    
            var request = {};
            request.method = 'POST';
            request.data = {};
            request.url = url;
    
            var promise = $http(request);
            var service = this;
    
            promise.success(function(data, status, header, config) {
                if (showLoader === true || showLoader === undefined) {
                    service.hideModal();
                }
                successCallback(data);
            });
    
            promise.error(function(data, status, header, config) {
    
            });
    
    
        */
    
    });
    

  • 您可以在加载这些常量时显示加载消息,以避免呼叫过程中的用户干预。

    好吧,据我所知,您需要确保在应用程序启动时,从服务器获取的一些数据可以在整个应用程序中全局使用

    我的建议是采用以下方法:

  • 创建用于保存全局数据的服务

    var app = angular.module('myApp', []);
    
    app.service('constantService', function() {
    
        // All your constants declared here.
    
    
    });
    
  • 现在,在app.run方法中,进行ajax调用或执行任何您想执行的操作,并初始化服务中的所有常量

    app.run(function($rootScope, $http, constantService) {
    
        /*
    
            Make an ajax call here and fetch all the Constants from your server.
    
    
            var request = {};
            request.method = 'POST';
            request.data = {};
            request.url = url;
    
            var promise = $http(request);
            var service = this;
    
            promise.success(function(data, status, header, config) {
                if (showLoader === true || showLoader === undefined) {
                    service.hideModal();
                }
                successCallback(data);
            });
    
            promise.error(function(data, status, header, config) {
    
            });
    
    
        */
    
    });
    

  • 您可以在加载这些常量时显示加载消息,以避免呼叫过程中的用户干预。

    好吧,据我所知,您需要确保在应用程序启动时,从服务器获取的一些数据可以在整个应用程序中全局使用

    我的建议是采用以下方法:

  • 创建用于保存全局数据的服务

    var app = angular.module('myApp', []);
    
    app.service('constantService', function() {
    
        // All your constants declared here.
    
    
    });
    
  • 现在,在app.run方法中,进行ajax调用或执行任何您想执行的操作,并初始化服务中的所有常量

    app.run(function($rootScope, $http, constantService) {
    
        /*
    
            Make an ajax call here and fetch all the Constants from your server.
    
    
            var request = {};
            request.method = 'POST';
            request.data = {};
            request.url = url;
    
            var promise = $http(request);
            var service = this;
    
            promise.success(function(data, status, header, config) {
                if (showLoader === true || showLoader === undefined) {
                    service.hideModal();
                }
                successCallback(data);
            });
    
            promise.error(function(data, status, header, config) {
    
            });
    
    
        */
    
    });
    

  • 您可以在加载这些常量时显示加载消息,以避免呼叫过程中的用户干预。

    好吧,据我所知,您需要确保在应用程序启动时,从服务器获取的一些数据可以在整个应用程序中全局使用

    我的建议是采用以下方法:

  • 创建用于保存全局数据的服务

    var app = angular.module('myApp', []);
    
    app.service('constantService', function() {
    
        // All your constants declared here.
    
    
    });
    
  • 现在,在app.run方法中,进行ajax调用或执行任何您想执行的操作,并初始化服务中的所有常量

    app.run(function($rootScope, $http, constantService) {
    
        /*
    
            Make an ajax call here and fetch all the Constants from your server.
    
    
            var request = {};
            request.method = 'POST';
            request.data = {};
            request.url = url;
    
            var promise = $http(request);
            var service = this;
    
            promise.success(function(data, status, header, config) {
                if (showLoader === true || showLoader === undefined) {
                    service.hideModal();
                }
                successCallback(data);
            });
    
            promise.error(function(data, status, header, config) {
    
            });
    
    
        */
    
    });
    

  • 您可以在加载这些常量时显示加载消息,以避免用户在调用过程中进行干预。

    一种可能的解决方案是使用服务作为单例。并在您的rootScope中引用它,然后每个控制器和视图都可以看到它。当您想使用
    $resource
    时,只需注入服务即可。因此,您的意思是,我将以“TheService.getData()”的方式使用数据。然后(…)”。对吗?但我真的不想对数据使用promise,我想直接使用它们。因为有很多地方可以使用这些数据,而且它们是不可变的。只有前几次需要检查数据是否已获取。使用解析,它将为您获取数据并在加载前等待views@Mavlarn您只需使用
    Service.data
    来获取/设置数据,而不是promise。一种可能的解决方案是使用服务作为单例。并在您的rootScope中引用它,然后每个控制器和视图都可以看到它。当您想使用
    $resource
    时,只需注入服务即可。因此,您的意思是,我将以“TheService.getData()”的方式使用数据。然后(…)”。对吗?但我真的不想对数据使用promise,我想直接使用它们。因为有很多地方可以使用这些数据,而且它们是不可变的。只有前几次需要检查数据是否已获取。使用解析,它将为您获取数据并在加载前等待views@Mavlarn您只需使用
    Service.data
    来获取/设置数据,而不是promise。一种可能的解决方案是使用服务作为单例。并在您的rootScope中引用它,然后每个控制器和视图都可以看到它。当您想使用
    $resource
    时,只需注入服务即可。因此,您的意思是,我将以“TheService.getData()”的方式使用数据。然后(…)”。对吗?但我真的不想对数据使用promise,我想直接使用它们。因为有很多地方可以使用这些数据,而且它们是不可变的。只有前几次需要检查数据是否已获取。使用解析,它将为您获取数据并在加载前等待views@Mavlarn您只需使用
    Service.data
    来获取/设置数据,而不是promise。一种可能的解决方案是使用服务作为单例。并在您的rootScope中引用它,然后每个控制器和视图都可以看到它。当您想使用
    $resource
    时,只需注入服务即可。因此,您的意思是,我将以“TheService.getData()”的方式使用数据。然后(…)”。对吗?但我真的不想对数据使用promise,我想直接使用它们。因为有很多地方可以使用这些数据,而且它们是不可变的。只有前几次需要检查数据是否已获取。使用解析,它将为您获取数据并在加载前等待views@Mavlarn您可以简单地使用
    service.data
    来获取/设置数据,而不是promise。