Die Erfolgsfunktion von $http.put
hat keinen Zugriff auf den Bereich this
des Dienstes, der innerhalb aufgerufen wird. Ich muss eine Eigenschaft des Dienstes im Rückruf von der PUT-Anfrage aktualisieren.AngularJS-Service http-Erfolgsfunktion mit falschem "diesem" Gültigkeitsbereich
Dies ist ein abgespeckte Beispiel dafür, was ich versuche, in einem Dienst zu tun:
var myApp = angular.module('myApp', function($routeProvider) {
// route provider stuff
}).service('CatalogueService', function($rootScope, $http) {
// create an array as part of my catalogue
this.items = [];
// make a call to get some data for the catalogue
this.add = function(id) {
$http.put(
$rootScope.apiURL,
{id:id}
).success(function(data,status,headers,config) {
// on success push the data to the catalogue
// when I try to access "this" - it treats it as the window
this.items.push(data);
}).success(function(data,status,headers,config) {
alert(data);
});
}
}
Sorry, wenn es einige Fehler in der JS ist, ist der wichtigste Punkt, wie greife ich auf den Umfang Service von innerhalb des Erfolgs Rückruf?
EDIT: Während die Antwort auf diese Frage richtig war, wechselte ich auf die factory
Methode sowohl als Josh und Mark empfohlen es
Ich mag immer noch die Factory-Methode in diesem Fall besser, aber +1 für die tatsächliche Beantwortung der Frage. :-) –
@Josh, ich bevorzuge die Fabrik auch. –
Ich werde mit der Fabrik Antwort gehen, aber ich fühle mich wie ich sollte dies als die richtige Antwort wählen, wie es die Frage beantwortet. Ich werde sicherlich eine Bearbeitung zu meiner Frage hinzufügen, um zu erwähnen, dass ich auf Ihre Frage zurückgegriffen habe @JoshDavidMiller –