2012-11-05 31 views
6

经过一些理解问题后,我遇到了非常困难的probs。我无法让我的自定义标题在AngularJS的$ request上工作。我的定义是这样的:

$scope.re = $resource('/', { 
    callback: 'JSON_CALLBACK' 
    }, { 
    'updateCart': { 
     method: 'POST', 
     headers: { 
      'module': 'Shop', 
      'mod_id': '1', 
      'event': 'updateCart' 
     } 
    } 
}); 

而且,这里JSFIDDLE

这是Issue仍然有效? 是否有另一种方法来设置自定义标题? 感谢您的帮助! :)

+0

看起来像已经差不多固定的自定义标题问题与$资源在Angular 1.1.1 pathological-kerning(2012-11-26)该版本被认为是不稳定的,虽然...可能要等到下一个稳定版本有这在稳定的分支 https://github.com/angular/angular.js/blob/master/CHANGELOG.md ($资源:支持自定义标题每个动作(fbdab513,#736)) – Preexo

+1

如果你没有意识到,您可以使用低级的$ http服务而不是$ resource。 $ http支持自定义标题。 –

回答

3

我相信你必须回到自定义标题$ http。我也在寻找完成类似的任务,但没有办法使用$ resource来完成它。

+4

您使用全局'$ httpProvider.defaults.headers.post'对象配置的标题不仅适用于所有'$ http'调用,还适用于所有'$ resource'调用。如果您可以接受为您的整个应用程序进行全局配置,这可能是一种解决方法。在“设置HTTP标题”下的[here](http://docs.angularjs.org/api/ng.$http) – vsp

+0

事实上,我确实使用了'$ httpProvider.defaults.headers.post'。我认为这很明显,所以我没有提到它。 –

+0

那么糟透了。 –

0

这个职位是有点老,但我可以为其他人喜欢我谁是寻找一个答案:

return $resource('api/people/:id', {id: '@id'}, { 
 
     min: { 
 
      data: '', 
 
      method: 'GET', 
 
      headers: {'Content-Type': 'application/min+json'}, 
 
      isArray: true 
 
     }, 
 
     update: { 
 
      method: 'PUT' 
 
     } 
 
    });

请不要忘记data,否则不会设置头。

对于像我爱打字,以打字稿建设者可以做如下:

export class ResourceBuilder { 
 

 
     static $inject = ['$resource']; 
 

 
     constructor(private $resource: ng.resource.IResourceService) { 
 
     } 
 

 
     private updateAction: ng.resource.IActionDescriptor = { 
 
      method: 'PUT', 
 
      isArray: false 
 
     }; 
 

 
     private minAction: any = { 
 
      data: '', 
 
      method: 'GET', 
 
      headers: {'Content-Type': 'application/min+json'}, 
 
      isArray: true 
 
     }; 
 

 
     public getResource(url: string, params?: Object): CrudResourceClass<any> { 
 
      let resource = this.$resource(url, params, { 
 
       update: this.updateAction, 
 
       min: this.minAction 
 
      }); 
 
      return <CrudResourceClass<any>> resource; 
 
     } 
 
    }

minActionany类型的,因为ng.resource.IActionDescriptor失误,物业,我不知道他们是否忘记了,我会为此开个问题。

我希望它有帮助。