根据以下示例,如何全局设置$resource
超时和标头?我有许多$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'
}
})
};
}
答案 0 :(得分:2)
将配置对象定义为常量,然后将其注入到需要它的每个服务中,并覆盖特定于该服务的任何属性。
//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)
};
}
答案 1 :(得分:0)
您可能在.value()
,.constant()
或angular
.module('myApp.constants')
.constant("AppConstants", {
"timeout" : 120000,
"method" : "GET",
....
// define your kv structure here
})
模块下拥有提供商。 Refer to this useful Gist解释并提供了所有不同提供商的示例代码。
为简单起见,这是.constant()示例:
document.onkeydown=function(e){
if (e.keyCode === 65) {
...
}
...
};
所以现在你可以将它注入你的模块函数中。 希望这会有所帮助。