2016-05-09 15 views
-2

Ich versuche also, ein Token vom Server abzurufen, aber beim Versuch, eine Methode in meinem Dienst aufzurufen, tritt ein Fehler auf.Ich kann nicht auf den Dienst im Controller zugreifen

LoginController.js:

(function(){ 
    angular.module('app') 
     .controller('LoginController', [ 
      '$http', 'authService', 
      LoginController 
     ]); 

    function LoginController(authService) { 
     var vm = this; 
     vm.user = {}; 

     vm.login = function() { 
      console.log("logging in"); 
      authService.getToken("admin", "admin") 
       .then(function (data) { 
        console.log(data); 

       }, function (error) { 
        //TODO: error handling 
       }) 
     }; 
    } 
})(); 

authService.js:

(function(){ 
    'use strict'; 

    angular 
     .module('app') 
     .factory('authService', ['$http', '$rootScope', 'REST_END_POINT', 
      authService 
     ]); 

    function authService($http, $rootScope, REST_END_POINT){ 
     return { 
      getToken: function(username, password) { 
       var config = { 
        headers: { 
         'Accept': 'application/json' 
        } 
       }; 
       var data = { 
        username: login, 
        password: password 
       }; 
       return $http.post(REST_END_POINT, +"/authenticate", data, config); 
      } 

     }; 
    } 
})(); 

ich diesen Fehler werden immer:

Typeerror: authService.getToken ist keine Funktion bei LoginController.vm .login

Antwort

0

Sie haben vergessen, $ http zu Ihrer Kontrolle hinzuzufügen er Funktion.

angular.module('app') 
    .controller('LoginController', [ 
    '$http', 'authService', 
    LoginController 
    ]); 

    function LoginController(_$http_needs_to_be_here, authService) { 
    ... 
+0

Ernst war, dass es? Vielen Dank! –

+0

Gern geschehen.) – k10der

0

$http von dieser Linie entfernen, da Sie es in Ihrem Dienst bereits

angular.module('app') 
    .controller('LoginController', [ 
     'authService', 
     LoginController 
    ]); 
0

Sie haben keine von params in LoginController Funktion falsch injiziert haben. Sie haben angle angle um $ http und authService zu injizieren. Aber Sie haben nur einen Parameter in Funktion. pls für weitere Informationen lesen Angular DI

Re-write code:

(function(){ 
    angular.module('app') 
     .controller('LoginController', [ 
      '$http', 'authService', 
      LoginController 
     ]); 

    function LoginController($http, authService) { 
     var vm = this; 
     vm.user = {}; 

     vm.login = function() { 
      console.log("logging in"); 
      authService.getToken("admin", "admin") 
       .then(function (data) { 
        console.log(data); 

       }, function (error) { 
        //TODO: error handling 
       }) 
     }; 
    } 
})(); 
Verwandte Themen