5

I Ressource gemacht, die Datensätze aus Rest-Service als Text Ebene zählen erhalten. Angular macht ein Array von jedem Zeichen aus der Antwort. Zum Beispiel, wenn Rest 20 Antworten, eckig machen Array [2,0]. Kann ich es reparieren, ohne Antwort zu transformieren oder $http zu verwenden?Angular Ressource mit Antworttyp text/plain macht immer einen Array von Strings

var resource = angular.module('resource'); 
resource.factory('RecordResource', ['$resource', 
    function($resource) { 
     return $resource('/rest/records/:id', {}, { 
      count: { 
       method:'GET', 
       url: "/rest/records/count", 
       isArray: false, 
       responseType: 'text' 
      } 
     } 
    } 
]); 
+1

Also, wie Sie die Zählmethode für die Ressource aufrufen? – GPicazo

+0

Ich sehe nichts in der [ 'defaultHttpResponseTransform'] (https://github.com/angular/angular.js/blob/master/src/ng/http.js#L129), die Ihren Text in eine verwandeln würde Array. Sie müssen Ihren Code dort anzeigen, wo Sie die Ressourcenmethode aufrufen und die Antwort verarbeiten – Phil

Antwort

7

Angular hat Schwierigkeiten, eine Liste von Strings mit $resource abruft. Einige Optionen haben Sie umfassen (Vorschlag zwei zu sein, was Sie wahrscheinlich auf Grund wollen Einschränkungen in Ihrer Frage) ...

  1. Opting den $http Service statt

  2. Zurück Ihre Antwort in einem gewickelten Objekt zu nutzen, wie zur als { 'collection': [20, 40, 60] }

  3. Trans die Antwort und den Zugriff durch eine definierte Eigenschaft zB data.collection. Ein Beispiel für Ihre Antwort verwandeln könnten ...


return $resource('/rest/records/:id', {}, { 
    count: { 
     method:'GET', 
     transformResponse: function (data) { 
      return { collection: angular.fromJson(data) } 
     [...]