$http.post undefined ist nicht eine Funktion

Ich versuche zu implementieren eine einfache $http post mit eckigen innerhalb dieser controller.

app.controller('LoginCtrl',['$scope','admin','$http',function($scope,$http,admin){
    $scope.isAdmin = admin.isAdmin;
    $scope.logout = admin.logout;

    $scope.login = function(){
        if(!$scope.username || !$scope.password ){ return; }
        $http.post('/login',{ username: $scope.username, password: $scope.password });
        $scope.username = '';
        $scope.password = '';
    };
}]);

Diesem Teil

$http.post('/login',{ username: $scope.username, password: $scope.password });

wirft dieser Fehler

TypeError: undefined is not a function
    at l.$scope.login (http://localhost:3000/javascripts/angularApp.js:165:9)
    at hb.functionCall (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:198:426)
    at Cc.(anonymous function).compile.d.on.f (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:214:485)
    at l.$get.l.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:126:193)
    at l.$get.l.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:126:419)
    at HTMLFormElement.<anonymous> (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:215:36)
    at HTMLFormElement.c (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:32:363)

hier ist der HTML-Code für die ui-view.

<script type="text/ng-template" id="/login.html">
    <button id="logout" class="btn btn-default" ng-click="logout()" ng-show="isAdmin()">Log Out</button>
    <div ng-controller="LoginCtrl">
      <form id="login" ng-submit="login()">
        <h2>The Login Page.</h2>
        <label>Username:</label>
        <input type="text" ng-model="username" placeholder="username"/>
        <label>Password:</label>
        <input type="password" ng-model="password" placeholder="password"/>
        <button type="submit" class="btn btn-primary">Submit</button>
      </form>
    </div>
  </script>

Habe ich überprüft die syntax, sieht alles richtig, $http erkannt wird als ein Objekt, wenn ich Konsole.melden Sie es in den Controller-scope.Aber aus irgendeinem Grund kann ich nicht machen, das post-Anforderung, da wird ein Fehler geworfen. Ich bin mit expressjs, um zu dienen der Inhalt und meine aktuelle route für '/login' ist nur eine einfache Antwort.send ('- Antwort gesendet werden!'). Wie Sie sehen können, in HTML bin ich mit angular-ui-router, in dem ich auch haben .Status gesetzt, wenn diese benötigt werden, lasst es mich bitte wissen.

Ich war frustriert darüber, weil dies eindeutig eine Funktion bekannt ist, und ich finde keine online-Ressourcen, um mir zu helfen mit dem genauen problem. Ich habe versucht, die Einstellung der content-type im Header und andere online-Lösungen, aber nichts hat geholfen. Wie es scheint, es ist vielleicht etwas dumm, aber ich kann es nicht finden.

Ich würde schätzen, dass jede Eingabe oder Hilfe, vielen Dank.

Haben Sie versucht, die Weiterleitung, die als argument an die login-Methode? $scope.login = function($http){
Danke Davion, habe ich nur dieses, und ich bekomme jetzt eine andere Fehlermeldung TypeError: Cannot read property 'post' undefined
Sie hat nicht die richtige Liste für die Abhängigkeiten auf controller-Initialisierung. '$scope','admin','$http',function($scope,$http,admin sollte '$scope','admin','$http',function($scope, admin, $http)
Danke Davion, dass alles behoben.

InformationsquelleAutor Dirk Dunn | 2015-03-15

Schreibe einen Kommentar