У меня есть несколько заводов в моем угловом сервисе, расположенном в другом файле js. И есть общая база всех запросов:Глобальная база ngResource
1) Разрешение: Знаменосец маркер (заголовок) (обязательно после входа в систему)
2) AccessDateTime, UserIPAddress (обязательно перед входом)
3) AccessDateTime, UserIPAddress, Идентификатор_пользователя (требуется после входа в систему)
Теперь я нахожу, что очень утомительно повторять это на каждом ресурсе. Как я могу сделать базу для этого? Я думал, что это что-то очень распространенное явление, но я не мог найти никакой документации по этому вопросу. Что-то вроде jquery.AjaxSetup(). (Только иллюстрация)
По умолчанию Код
angular.module('app.test').factory('Test', ['$resource',
function($resource) {
return {
resource1: $resource(
url: 'test1/:testId/:AccessDateTime/:UserIPAddress',
headers: { Authorization: Bearer token},
params: { testId: '@_id', AccessDateTime:'@AccessDateTime', UserIPAddress: '@UserIPAddress' }
}),
resource2: return $resource(
url: 'test2/:testId/:AccessDateTime',
params: { testId: '@_id', AccessDateTime:'@AccessDateTime' }
});
}
}
]);
код после того, как ресурсная база реализована
angular.module('app.base').factory('FactoryBase'), ['resource',
function($resource) {}
if (resource need authorization) {
auto append header, AccessDateTime, UserIPAddress
} else if (resource do not need authorization) {
auto append AccessDateTime
}
// depending on attribute set with authorize: true/false
}
]);
angular.module('app.test').factory('Test', ['$resource',
function($resource) {
require('FactoryBase'),
return {
resource1: $resource(
url: 'test1/:testId',
authorize: true
}),
resource2: $resource(
url: 'test2/:testId',
authorize: false
}),
}
]);
Вы можете посмотреть, как Backbone расширяет классы https://github.com/jashkenas/backbone/blob/master/backbone.js#L1858 –