2016-12-14 2 views
0

Ich bin neu in Winkel- und MEAN Stapeln, und vor diesem, fragte ich eine Frage hier: Angular Routing ngRoute fails to pull my other HTML fileshttp Funktion undefiniert auf Winkel

Grundsätzlich habe ich nicht richtig mein app-Routing eingestellt und die Lösung Ich muss meinen Link zu # ändern! von #, und jemand dort hat gesagt, dass es durch das Brechen der Änderung in Angular 1.6 verursacht wurde, vorher hatte ich eine funktionierende Implementierung, aber es war keine richtige Einseiten-App, da es nicht nur den passenden HTML der App zog. Okay, jetzt kann ich die App ansehen und navigieren.

Dann lief ich in ein anderes Problem, wenn ich mit der App zu kommunizieren versucht, die mich angeblich in die App registriert, wenn ich auf den Button auf meiner HTML-Seite

<form class="form-auth" ng-submit="register()"> 
    <h2>Register</h2> 
    <p class="text-warning">{{error_message}}</p> 
    <input type="username" ng-model="user.username" placeholder="Username" class="form-control"><br> 
    <input type="password" ng-model="user.password" placeholder="Password" class="form-control"><br> 
    <input type="submit" value="Register" class="btn btn-primary" /> 

geklickt habe ich eine Fehler auf dem Konsolenprotokoll, sagen

Error: $http.post(...).success is not a function 
at b.$scope.register (iotApp.js:73) 
at fn (eval at compile (angular.js:15152), <anonymous>:4:144) 
at e (angular.js:26673) 
at b.$eval (angular.js:17958) 
at b.$apply (angular.js:18058) 
at HTMLFormElement.<anonymous> (angular.js:26678) 
at bg (angular.js:3613) 
at HTMLFormElement.d (angular.js:3601)(anonymous function) @ angular.js:14324(anonymous function) @ angular.js:10834$apply @ angular.js:18063(anonymous function) @ angular.js:26678bg @ angular.js:3613d @ angular.js:3601 

Dies ist der Teil des Codes ist von der Konsole angezeigt, wo der Fehler

app.controller('authController', function($scope, $http, $rootScope, $location){ 
    $scope.user = {username: '', password: ''}; 
    $scope.error_message = ''; 

    $scope.login = function(){ 
    $http.post('/auth/login', $scope.user).success(function(data){ 
     if(data.state == 'success'){ 
     $rootScope.authenticated = true; 
     $rootScope.current_user = data.user.username; 
     $location.path('/'); 
     } 
     else{ 
     $scope.error_message = data.message; 
     } 
    }); 
    }; 

    $scope.register = function(){ 
    $http.post('/auth/signup', $scope.user).success(function(data){ 
     if(data.state == 'success'){ 
     $rootScope.authenticated = true; 
     $rootScope.current_user = data.user.username; 
     $location.path('/'); 
     } 
     else{ 
     $scope.error_message = data.message; 
     } 
    }); 
    }; 
}); 

Ich habe einige der anderen Antworten gelesen, aber die meisten von ihnen haben versehentlich die Abhängigkeit in die Methodenparameter gesetzt, in denen der Controller bereits importiert ist. Es funktioniert gut, wenn ich den Advanced REST Client verwende, der eine Chrome-Erweiterung ist, um eine Registrierungsanforderung manuell zu senden, aber nicht, wenn ich die App verwende. Jede Hilfe oder nur allgemeine Hinweise würden geschätzt. Vielen Dank!

+1

.success ein paar Versionen zurück veraltet wurde, versuchen 'mit' .then() statt – Fissio

+0

Dank! Es funktioniert jetzt. Die meisten meiner Codes funktionierten nicht, weil ich einem alten Tutorial auf dem MEAN-Stack folgte. @Fissio – blueblood

Antwort

0

Von der $http.post Dokumentation:

// Simple GET request example: 
$http({ 
    method: 'GET', 
    url: '/someUrl' 
}).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. 
}); 
Verwandte Themen