2012-11-05 39 views
6

sau một vài vấn đề về hiểu biết, tôi đã chạy vào các chương trình thực sự khó. Tôi không thể có được các tiêu đề tùy chỉnh của mình để làm việc với yêu cầu $ từ AngularJS. Định nghĩa của tôi trông như thế này:

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

Cũng ở đây JSFIDDLE

Issue này vẫn còn hoạt động? Có cách nào khác để đặt tiêu đề tùy chỉnh không? Cảm ơn bạn đã giúp đỡ! :)

+0

Có vẻ như gần như đã khắc phục vấn đề tiêu đề tùy chỉnh với $ resource trong Angular 1.1.1 bệnh lý-kerning (2012-11-26) phiên bản đó được coi là không ổn định mặc dù ... có thể phải chờ đến khi bản phát hành ổn định tiếp theo điều này trong nhánh ổn định https://github.com/angular/angular.js/blob/master/CHANGELOG.md ($ tài nguyên: hỗ trợ tiêu đề tùy chỉnh cho mỗi hành động (fbdab513, # 736)) – Preexo

+1

Trong trường hợp bạn không biết, bạn có thể sử dụng dịch vụ http $ cấp thấp hơn thay vì $ resource. $ http hỗ trợ tiêu đề tùy chỉnh. –

Trả lời

3

Tôi tin rằng bạn phải dự phòng đến $ http cho tiêu đề tùy chỉnh. Tôi cũng đang tìm cách thực hiện nhiệm vụ tương tự nhưng không có cách nào để thực hiện nó bằng cách sử dụng tài nguyên $.

+4

Các tiêu đề mà bạn định cấu hình với đối tượng '$ httpProvider.defaults.headers.post' toàn cầu sẽ không chỉ áp dụng cho tất cả các cuộc gọi' $ http', mà còn cho tất cả các cuộc gọi '$ resource'. Nếu bạn có thể sống với nó được cấu hình toàn cầu cho toàn bộ ứng dụng của bạn, điều này có thể là một cách giải quyết. Xem [ở đây] (http://docs.angularjs.org/api/ng.$http) trong phần "Đặt tiêu đề HTTP" – vsp

+0

Thực tế là tôi đã sử dụng '$ httpProvider.defaults.headers.post'. Tôi nghĩ nó rõ ràng nên tôi không đề cập đến nó. –

+0

Điều đó thật tệ. –

0

bài này là một chút cũ nhưng tôi trả lời cho những người khác như tôi những người đang tìm kiếm một câu trả lời:

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

Xin đừng quên data bởi vì nếu không thiết lập tiêu đề.

Đối với những người như tôi gõ yêu thương, một người thợ xây trong nguyên cảo có thể được thực hiện như sau:

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; 
 
     } 
 
    }

Các minAction là loại anyng.resource.IActionDescriptor bỏ lỡ tài sản đó, tôi không biết nếu họ đã quên, tôi sẽ mở một vấn đề cho điều đó.

Tôi hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan