angularjs – 如何以角度扩展$http服务?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何以角度扩展$http服务?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
不幸的是,我们的运行速度为1.2.26(当它被宝石化时会升级到1.2.28).

在此期间,我如何修补(heh)$http以便可以使用短手补丁方法?我对整个服务/工厂/模块的事情都很陌生.我已经做了几个小时的搜索,似乎无法搞清楚.

  1. myApp.factory('patchedHTTP',function($http,BasicService) {
  2. // $http['patch'] = function(url,data,config) {
  3. // return $http(angular.extend(config || {},{
  4. // method: 'patch',// url: url,// data: data
  5. // }));
  6. // };
  7. var extended = angular.extend(BasicService,{});
  8. extended.createShortMethodsWithData('patch');
  9. return extended;
  10. });

以上是我得到的最好的……它没有做任何XD

module.decorator已添加到1.4版的模块API中.这就是它在1.2.x中不起作用的原因.

请在下面找到一个工作演示或在jsfiddle.

我花了一段时间来实现补丁方法,因为我错过了返回$http的承诺.但现在它应该工作.

  1. angular.module('patchDemo',[])
  2. .config(function ($provide) {
  3.  
  4. $provide.decorator('$http',function ($delegate) {
  5. // NOTE: $delegate is the original service
  6. $delegate.patch = function(url,config) {
  7. var paramsObj = angular.extend({},config || {},{
  8. method: 'PATCH',url: url,data: data
  9. });
  10.  
  11. return $delegate(paramsObj);
  12. }
  13. return $delegate;
  14. });
  15. })
  16. .controller('MainController',MainController);
  17.  
  18. function MainController($http) {
  19. console.log($http.patch);
  20. //$http({method: 'PATCH',url: 'http://jsonplaceholder.typicode.com/posts/1',data: {title:'foo'}}); //>>>>>working long version of patch
  21.  
  22. $http.patch('http://jsonplaceholder.typicode.com/posts/1',{
  23. title: 'foo'
  24. }).then(function(response) {
  25. console.log(response);
  26. });
  27.  
  28. }
  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.26/angular.js"></script>
  2. <div ng-app="patchDemo" ng-controller="MainController"></div>

猜你在找的Angularjs相关文章