Ответ 1
Хотя, это не очевидно, есть способ перехватить запрос $resource.
Вот пример:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Intercept resource request</title>
<style type="text/css">.ng-cloak { display: none; }</style>
<script src="angular.js"></script>
<script src="angular-resource.js"></script>
<script>
angular.module("app", ["ngResource"]).
factory(
"services",
["$resource", function ($resource)
{
return $resource(
"http://md5.jsontest.com/",
{},
{
MD5:
{
method: "GET",
params: { text: null },
then: function(resolve)
{
this.params.text = "***" + this.params.text + "***";
this.then = null;
resolve(this);
}
}
});
}]).
controller(
"Test",
["services", function (services)
{
this.value = "Sample text";
this.call = function()
{
this.result = services.MD5({ text: this.value });
}
}]);
</script>
</head>
<body ng-app="app" ng-controller="Test as test">
<label>Text: <input type="text" ng-model="test.value" /></label>
<input type="button" value="call" ng-click="test.call()"/>
<div ng-bind="test.result.md5"></div>
</body>
</html>
Как это работает:
- $resource объединяет определение действия, запрашивает параметры и данные для создания параметра конфигурации для запроса $http.
- Параметр конфигурации, переданный в запрос $http, рассматривается как объект, похожий на обещание, поэтому он может содержать функцию для инициализации конфигурации.
- Действие, то функция может преобразовать запрос по своему усмотрению.
Демо можно найти на transform-request.html
В другом месте Я уже показал аналогичный подход, используемый для отмены запроса $resource.
Смотрите также: Запросить запрос ресурсов angularjs