2016-02-29 16 views
5

Muszę wysłać tablicę json do restrykcyjnego api z mojej aplikacji angularjs. Używam ngresources, aby to zrobić. Od tego czasu jestem gotowy do wysyłania i umieszczania pojedynczego obiektu bez problemu, ale teraz muszę wysłać tablicę obiektów i nie mogę.

Próbowałem wykonać połączenie z zewnętrznej aplikacji odpoczynku i działa dobrze, ale nie jest to możliwe z mojej aplikacji kątowej. Mam trie parsować objet z JSON.stringify ale nadal nie działa. Ustawiłem nagłówek "Content-Type": "application/json", a także na $ resources.

ten sposób robię negresource:

.factory('AddSignosClinicos', function ($resource) { 

    return $resource(dondeapuntar + "/Rest/Pacientedatossignosclinicos.svc/pACIENTEDATOSSIGNOSCLINICOSList/Add", {}, { 
     create: { method: "POST", headers: { 'Content-Type': 'application/json', params: {} } } 
    }); 
}) 

I to jest, jak się nazywamy funkcję:

var objeto = JSON.stringify(SignosClinicosGuardar); 

var signosClinicosService = new AddSignosClinicos(objeto); 

signosClinicosService.$create().then(function() {}); 

Zrobiłem console.log z Address i jest właściwa tablica json .

Każdy pomysł?

Dziękuję bardzo

EDIT

Próbowałem $ komponent HTTP dla żądania post, i to działa! Nie rozumiem, dlaczego nie działa z ngResources, to jest mój kod $ http:

$http({ 
      url: 'http://localhost:1046/Rest/Pacientedatossignosclinicos.svc/pACIENTEDATOSSIGNOSCLINICOSList/Add', 
      method: "POST", 
      data: SignosClinicosGuardar, 
      headers: { 
       'Content-Type': 'application/json; charset=UTF-8' 
      } 
     }); 
+0

dostarczyć kawałek kodu i kopać głęboko na json stringify błędu proszę. – morels

+0

Przepraszam za to. Dodałem powyższy kod. Dziękujemy –

+0

Spróbuj dodać opcję 'isArray: true' do zwróconego zasobu $. [Zobacz ng docs na $ resource] (https://docs.angularjs.org/api/ngResource/service/$resource) – Fiver

Odpowiedz

5

Aby dodawać tablicę obiektów trzeba dodać opcję isArray: true do $ zasobu:

.factory('AddSignosClinicos', function ($resource) { 
    return $resource(
     "url-string-here", 
     {}, 
     { 
      create: { 
       method: "POST", 
       isArray: true 
      } 
     } 
    ); 
}) 

Wywołanie nowego create funkcji będzie wyglądać następująco:

//some list of your object instances 
var array_of_objects = ... 

var saved_objects = AddSignosClinicos.create(
    array_of_objects 
); 

saved_objects.$promise.then(function() { 
    ... 
}); 

pamiętać, że create vs $create, nie ma $.

See the Angular documentation on $resource

+0

To też nie zadziałało. Dziękuję –

+0

Dodałem pseudo-kod pokazujący podstawowe użycie, ponieważ nie jestem pewien, czy poprawnie wołasz do metody zasobów. – Fiver

+0

Masz rację. Nazwałem złym zasobem $. Dziękuję bardzo! :) –