Ersuchenden Beispiel für angular.js $http und $resource) POST-und transformRequest as a service
Mit Winkel 1.1.5 und benötigen, um pass-urlencoded Daten an das backend. Ich habe diese Arbeit mit der Lösung von hier:
Wie kann ich die post-Daten als Daten in das Formular, statt ein Anfrage-payload?
$http({
method: 'POST',
url: url,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
},
data: xsrf
}).success(function () {});
Habe ich eingebettet sind diese in meinem controller mit Erfolg, aber die "sauberere" Weg ist, einen service zu nutzen, und $ - Ressource anstelle des $http-Objekt.
Es ist möglich, transformRequest mit $resource nach 1.1.2 zu diesem Thema:
$resource transformResponse nicht funktioniert
aber ich finde keine funktionierende Beispiele. Kann mir jemand ein Beispiel geben, die oben genannte Lösung als ein service-Objekt mit $resource?
Du musst angemeldet sein, um einen Kommentar abzugeben.
$RESOURCE BEISPIEL
Für csrf, In eine rails-app, die Sie Hinzugefügt haben, um die
<%= csrf_meta_tags %>
in Ihrem header-layout (wenn es nicht standardmäßig)Hier wird ein service-Objekt
Hier ist ein Beispiel in einem controller
Folders.list()
automatischGET /folders/
auf dem server und gibt das Ergebnis aus(das sollte json) als ein Objekt.Tipp:
Direkt nach
$scope.folders = Folders.list();
im controller$scope.folders
leer, wird es gefüllt werden, in der Zeit, wenn die Antwort wieder vom server.Einfache Beispiele mit $http und $Ressourcen
http://jsfiddle.net/jhsousa/aQ4XX/
ÜBER DIE FORM
hier ist eine form
Werden Sie feststellen, die
ng-model
.'ng-model'=>'item.folderName'
erstellen einer$scope.item
improjectController
und fügen Sie einen SchlüsselfolderName
in es. Dasselbe für die anderenng-model
's.'ng-init'=>'item.orientation=1;'
wird zum ausführen der Ausdruck. So wird es nicht die folgendenitem.orientation=1
wir auf diesem Wege einen Standardwert für unsere radio-Eingänge, so einfach.Wenn das Formular abgeschickt wird
ng-submit
fangen, und rufen Sie diecreate
Aktion aus derprojectController
mititem
als parameter, keine Notwendigkeit zu sagen, dassitem
enthalten die Eingänge Werte?Hier ist die controller-Teil
$scope.create
ist die Aktion, die aufgerufen wird, durchng-submit
,item
ist dieitem
parameter aus dem Formular, so finden Sie Sachen in wieitem.description
.Folders
ist das service-Objekt, das wir vorher gesprochen haben.