Errore AngularJS. Il successo non è una funzione

Ho costruito una fabbrica per gestire le funzioni per il mio controller, ma in qualche modo il controller restituisce un errore su una delle funzioni:

Errore: Auth.getUser (…). Successo non è una funzione @ http: // localhost: 8080 / app / controller / mainCtrl.js: 10: 1

Non ho idea di cosa sta succedendo qui, il resto delle funzioni sembra funzionare bene?

controller principale:

angular.module('mainCtrl', []) .controller('mainController', function($rootScope, $location, Auth) { var vm = this; vm.loggedIn = Auth.isLoggedIn(); $rootScope.$on('$routeChangeStart', function() { vm.loggedIn = Auth.isLoggedIn(); Auth.getUser() .success(function(data) { vm.user = data; }); }); vm.doLogin = function() { Auth.login(vm.loginData.username, vm.loginData.password) .success(function(data) { $location.path('/users'); }); }; }); 

Vedi ‘ Avviso di cancellazione ‘ dalla documentazione del servizio $ http :

Il successo e l’ errore dei metodi di promise di eredità $ $ sono stati deprecati. Utilizzare invece lo standard quindi il metodo.

Puoi saperne di più su questi metodi nella documentazione su $ q .

Ecco il codice

Codice inserito

 $http( { method: 'POST', url: '/Home/CreateCustomer', /*You URL to post*/ data: $scope.cust /*You data object/class to post*/ }).success(function (data, status, headers, config) { }).error(function (data, status, headers, config) { }); 

Codice consentito Angular $ http doc

 $http( { method: 'POST', url: '/Home/CreateCustomer', /*You URL to post*/ data: $scope.cust /*You data object/class to post*/ }).then(function successCallback(response) { // this callback will be called asynchronously // when the response is available }, function errorCallback(response) { // called asynchronously if an error occurs // or server returns response with an error status. }); 

È ansible utilizzare quindi instradare il successo:

 var personController = function ($scope, personService) { $scope.persons = personService.getAll().then(function (data) { $scope.persons = genericSuccess(data); }); var genericSuccess=function(res) { return res.data; } }; 

È una buona cosa che .success sia deprecato comunque. Personalmente non ho mai fatto pace con questo, perché lo chiedi?

 object.functionCall(parameters).success(functions (response){ if(response!=="failure") do this----- }); 

Voglio dire che tipo di successo ha a che fare con il fallimento nel suo blocco. Usa quindi invece e tutta la logica inizierà a dare un senso.

versione angular 1.2.x è ansible utilizzare .success angular versione 1.6.x si otterrà l’errore “.success non è una funzione”

la soluzione è: sostituire “.success” con “.then”

la promise di successo è ora deprecata. Usa quindi la funzione invece il successo