Also habe ich ein Controller und Service-Paar, die gerade richtig funktionieren, aber mein Chef möchte, dass ich die Erfolg/Fehler/schließlich blockiert von der Steuerung auf den Dienst.Angular JS - Empfangen von Informationen von einem Service
Controller-Funktion:
$scope.createUserButton = function() {
$scope.isBusy = true;
creationService.makeNewUser($scope.form)
.success(function (data) {
var user = JSON.parse(data);
if (typeof user !== 'undefined') {
$scope.testusers.push(user);
}
}).error(function() {
notify({
message: 'Could not create user',
classes: 'alert-danger',
templateUrl: 'partials/settingNotification.html'
});
}).finally(function() {
$scope.isBusy = false;
});
};
Service:
service('creationService', ['restfulRepo', '$http',
function (restfulRepo, $http) {
this.makeNewUser = function (tempuser) {
return $http({
url: 'http://localhost:60098/***/*************/******',
data: tempuser, method: 'PUT'
});
};
}]);
Das Problem, das ich habe, ist, dass, wenn ich den Erfolg oder blockiert schließlich in den Dienst zu bewegen, dann haben sie nicht Zugriff auf das IsBusy-Flag oder auf das Testusers-Array. Das Array ist an ein Diagramm im Controller gebunden, das die zurückgegebenen Informationen anzeigt.
'$ http' gibt ein Versprechen, in dem Controller Sie das tun können:' creationService. makeNewUser(). then (function() {$ scope.isBusy = false;}); ' – Erevald
https://docs.angularjs.org/api/ng/service/$http#!/" Das '$ http'-Erbe Die Methoden "success" und "error" sind veraltet. Verwenden Sie stattdessen die then-Methode "then". Wenn "$ httpProvider.useLegacyPromiseExtensions" auf "false" gesetzt ist, werden diese Methoden den Fehler "$ http/legacy" ausgeben. " – Claies