2017-02-27 3 views
0

Ich habe ein Problem mit unten Code. Es zeigt $ http undefined in der Konsole. Ich habe Umfang $ injiziert und $ http sowie

SignInCtrl.$inject = ['$scope', '$http']; 
function SignInCtrl($scope,$http) { 
$scope.login = function($http) { 
return $http.post('/user/login', user).then(handleSuccess, handleError('Error creating user')); 

}; 
} 
+0

die $ http Parameter von Funktion entfernen. –

Antwort

4

ersetzen

$scope.login = function($http) 

von

$scope.login = function() 

Der Anrufer nicht die $ HTTP-Dienst als Argument nicht übergeben. Es ist in den Controller injiziert. So verbirgt Ihre Funktionsdeklaration das injizierte $ http durch das (undefinierte) Eins (nicht), das als Argument übergeben wird.

-1
/**@inject*/ 
function SignInCtrl($scope,$http) { 
    $scope.login = function() { 
     return $http.post('/user/login', user).then(handleSuccess, handleError('Error creating user')); 
    }; 
} 

mit/** @ngInject */u alle Abhängigkeiten injizieren können Sie müssen alle Abhängigkeiten nicht schreiben wie (SignInCtrl $ inject = [ '$ scope', '$ http'].);

In $ scope.login Funktion Sie $ http sind vorbei, die erforderlich ist, nicht Sie injiziert haben bereits

+0

Während dieser Code die Frage beantworten kann, würde die Bereitstellung eines zusätzlichen Kontextes hinsichtlich dessen, wie und/oder warum er das Problem löst, den langfristigen Wert der Antwort verbessern. –

+0

Dankeschön für den Rat –

Verwandte Themen