加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS负载配置应用程序启动

发布时间:2020-12-17 08:57:02 所属栏目:安全 来源:网络整理
导读:我需要加载配置文件(JSON格式)在我的AngularJS应用程序启动,以加载几个参数,将用于所有api调用。所以我想知道是否可能这样做在AngularJS和如果是在哪里/当我将加载配置文件? 注意: – 我需要保存配置文件参数在服务,所以我需要加载json文件内容前任何控
我需要加载配置文件(JSON格式)在我的AngularJS应用程序启动,以加载几个参数,将用于所有api调用。所以我想知道是否可能这样做在AngularJS和如果是在哪里/当我将加载配置文件?

注意:
– 我需要保存配置文件参数在服务,所以我需要加载json文件内容前任何控制器加载,但服务单位可用
– 在我的情况下,使用外部json文件是必须的,因为应用程序客户端需要能够从外部文件轻松更新应用程序配置,而无需通过应用程序源。

EDITED

听起来像你正在尝试做的是配置一个服务的参数。为了异步加载外部配置文件,您必须在数据加载完成回调中自行引导角度应用程序,而不是使用自动加载。

对于实际上没有定义服务URL的服务定义(这将类似于contact-service.js)考虑这个例子:

angular.module('myApp').provider('contactsService',function () {

    var options = {
        svcUrl: null,apiKey: null,};

    this.config = function (opt) {
        angular.extend(options,opt);
    };

    this.$get = ['$http',function ($http) {

        if(!options.svcUrl || !options.apiKey) {
            throw new Error('Service URL and API Key must be configured.');
        }

        function onContactsLoadComplete(data) {
            svc.contacts = data.contacts;
            svc.isAdmin = data.isAdmin || false;
        }

        var svc =  {
            isAdmin: false,contacts: null,loadData: function () {
                return $http.get(options.svcUrl).success(onContactsLoadComplete);
            }
        };

        return svc;
    }];
});

然后,在文档准备好,您将调用加载您的配置文件(在这种情况下,使用jQuery)。在回调中,您将使用加载的json数据执行angular应用程序.config。运行.config后,您将手动引导应用程序。非常重要:如果你使用这个方法,不要使用ng-app指令,或者angular会引导它自己看到这个URL有更多的细节:

http://docs.angularjs.org/guide/bootstrap

像这样:

angular.element(document).ready(function () {
    $.get('/js/config/myconfig.json',function (data) {

        angular.module('myApp').config(['contactsServiceProvider',function (contactsServiceProvider) {
            contactsServiceProvider.config({
                svcUrl: data.svcUrl,apiKey: data.apiKey
            });
        }]);

        angular.bootstrap(document,['myApp']);
    });
});

更新:这是一个JSFiddle示例:http://jsfiddle.net/e8tEX/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读