设置角$资源配置在全球范围内 [英] Setting Angular $resource Config Globally

查看:91
本文介绍了设置角$资源配置在全球范围内的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据下面的示例

,我怎么能设置 $资源超时和全球头?我公司拥有一批 $资源像定义以下但我preFER不重复的基本配置为每个。

 
    .module('myApp.services')
    .factory('myServices',myServices);。myServices $注射='$资源'];功能myServices($资源){
    返回{
        serviceA:$资源('/ API / serviceA',{
            serviceA_paramA:@serviceA_valueA',
            serviceA_paramB:@serviceA_valueB
        },{
            '得到':{
                方法:GET,
                超时:120000
            }
        },{
            标题:{
                接受:应用/ JSON,
                内容类型:应用/ JSON
            }
        }),
        serviceB:$资源('/ API / serviceB',{
            serviceB_paramA:@serviceB_valueA',
            serviceB_paramB:@serviceB_valueB
        },{
            '得到':{
                方法:GET,
                超时:120000
            }
        },{
            标题:{
                接受:应用/ JSON,
                内容类型:应用/ JSON
            }
        })
    };
}


解决方案

定义你的配置对象为常量,那么你可以把它注射到每个需要的服务,并覆盖特定于该服务的任何属性。

  //恒
angular.module('对myApp')
  .constant('serviceConfigObject',
    {
      '得到':{
        方法:GET,
        超时:120000
      }
    },{
      标题:{
        接受:应用/ JSON,
        内容类型:应用/ JSON
      }
    })//服务

    .module('myApp.services')
    .factory('myServices',myServices);。myServices $注射='$资源','serviceConfigObject'];功能myServices($资源,serviceConfigObject){
    返回{
        serviceA:$资源('/ API / serviceA',{
            serviceA_paramA:@serviceA_valueA',
            serviceA_paramB:@serviceA_valueB
        },serviceConfigObject)
        serviceB:$资源('/ API / serviceB',{
            serviceB_paramA:@serviceB_valueA',
            serviceB_paramB:@serviceB_valueB
        },serviceConfigObject)
    };
}

Based on the following sample, how can I set the $resource timeout and headers globally? I have a number of $resource definitions like the following but I’d prefer to not repeat the basic config for each.

angular
    .module('myApp.services')
    .factory('myServices', myServices);

myServices.$inject = ['$resource'];

function myServices($resource) {
    return {
        serviceA: $resource('/api/serviceA', {
            serviceA_paramA: '@serviceA_valueA',
            serviceA_paramB: '@serviceA_valueB'
        }, {
            'get': {
                method: 'GET',
                timeout: 120000
            }
        }, {
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            }
        }),
        serviceB: $resource('/api/serviceB', {
            serviceB_paramA: '@serviceB_valueA',
            serviceB_paramB: '@serviceB_valueB'
        }, {
            'get': {
                method: 'GET',
                timeout: 120000
            }
        }, {
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            }
        })
    };
}

解决方案

Define your configuration object as a constant, then you can inject it into each service that needs it, and overwrite any properties that are specific to that service.

//Constant
angular.module('myApp')
  .constant('serviceConfigObject',
    {
      'get': {
        method: 'GET',
        timeout: 120000
      }
    }, {
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      }
    })

// Service
angular
    .module('myApp.services')
    .factory('myServices', myServices);

myServices.$inject = ['$resource', 'serviceConfigObject'];

function myServices($resource, serviceConfigObject) {
    return {
        serviceA: $resource('/api/serviceA', {
            serviceA_paramA: '@serviceA_valueA',
            serviceA_paramB: '@serviceA_valueB'
        }, serviceConfigObject),
        serviceB: $resource('/api/serviceB', {
            serviceB_paramA: '@serviceB_valueA',
            serviceB_paramB: '@serviceB_valueB'
        }, serviceConfigObject)
    };
}

这篇关于设置角$资源配置在全球范围内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆