全局设置 Angular $resource 配置
Setting Angular $resource Config Globally
根据以下示例,如何全局设置 $resource
超时和 headers?我有许多 $resource
定义,如下所示,但我不想为每个定义重复基本配置。
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'
}
})
};
}
将您的配置对象定义为常量,然后您可以将其注入到需要它的每个服务中,并覆盖该服务特定的任何属性。
//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)
};
}
您可能在 .config()
、.value()
或 .constant()
模块下有一个提供商。 Refer to this useful Gist 其中解释并提供了所有不同提供商的示例代码。
为简单起见,这是 .constant() 示例:
angular
.module('myApp.constants')
.constant("AppConstants", {
"timeout" : 120000,
"method" : "GET",
....
// define your kv structure here
})
所以现在你可以将它注入到你的模块函数中了。
希望这有帮助。
根据以下示例,如何全局设置 $resource
超时和 headers?我有许多 $resource
定义,如下所示,但我不想为每个定义重复基本配置。
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'
}
})
};
}
将您的配置对象定义为常量,然后您可以将其注入到需要它的每个服务中,并覆盖该服务特定的任何属性。
//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)
};
}
您可能在 .config()
、.value()
或 .constant()
模块下有一个提供商。 Refer to this useful Gist 其中解释并提供了所有不同提供商的示例代码。
为简单起见,这是 .constant() 示例:
angular
.module('myApp.constants')
.constant("AppConstants", {
"timeout" : 120000,
"method" : "GET",
....
// define your kv structure here
})
所以现在你可以将它注入到你的模块函数中了。 希望这有帮助。