2012-10-09 36 views
27

以下工作正常,但我認爲這會全局修改$ httpProvider,這不是我想要的。

angular.module('SessionService', ['ngResource']) 
    .config(function($httpProvider){ 
     $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8' 
    }) 
    .factory('Login', function($resource){ 
     var resource = $resource('/adminui/login',{},{ 
      post:{ 
       method:"POST", 
       isArray:false 
      }, 
     }); 
     return resource; 
    }) 
LoginCtrl = function($scope,Login) { 
    $scope.login = function(){ 
     Login.post($.param({user:$scope.user.username,password:$scope.user.password}),$.noop,$.noop) 
    } 
} 

反正有沒有做到這一點呢?

... 
    .factory('Login', function($resource){ 
     var resource = $resource('/adminui/login',{},{ 
      post:{ 
       method:"POST", 
       isArray:false, 
       headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} // ignored 
      }, 
     }); 
     return resource; 
    }) 

「headers」參數似乎被忽略。該請求仍然

Content-Type:application/json;charset=UTF-8

是我的頭值好嗎?

+0

你可能想看看這個:https://github.com/angular/angular.js/issues/736 – Tosh

回答

63

我已經確認1.1.3確實支持這一點。但是,您需要確保您還獲得了資源服務的1.1.3版本。快速測試:

angular.module('myApp', ['ngResource']). 
    config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/', {templateUrl: 'partials/partial1.html',controller: 'MyController'}); 
    $routeProvider.otherwise({redirectTo: '/'}); 
    }]) 

    .controller("MyController", function($scope, Bug) { 
    Bug.post({test:"test"}); 
    }) 

    .factory('Bug', function($resource){ 
    var resource = $resource('/bug',{},{ 
     post:{ 
      method:"POST", 
      isArray:false, 
      headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} 
     }, 
    }); 
    return resource; 
}); 

這將使設置爲標題的請求(使用Chrome確認):

Content-Type:application/x-www-form-urlencoded; charset=UTF-8 

快速注意,我無法找到一個下載angular-的resource.js,所以我不得不去github網站下載它。它是here

對於一些咯咯笑聲,我創建了一個小提琴。請注意,POST調用會失敗,但其標題設置正確。 Example Fiddle

+0

太棒了!謝謝 :) – DanH

20

儘管開發文檔(截至10月12日)顯示覆蓋頭文件可能在$ resource中,但它尚未發佈(v1.0.2或v1.1.0)。但是,該功能位於v1.0.x和主分支中。爲了獲得該功能,您現在可以考慮從v1.0.x分支開始構建。

如何打造:http://docs.angularjs.org/#H1_4

或者,你可以從快照生成拉:http://code.angularjs.org/snapshot/

貌似這個功能將在下一版本中。

+0

我會嘗試做這個構建。鏈接爲+1。謝謝! – Shanimal

+6

-1 AngularJS使我們嘗試不可能的事情! – Lee

相關問題