无法访问控制器中的服务

时间:2016-05-09 11:00:34

标签: angularjs

所以我正在尝试从服务器检索令牌,但在尝试调用服务中的方法时遇到错误。

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);
            }

        };
    }
})();

我一直收到这个错误:

TypeError:authService.getToken不是函数     在LoginController.vm.login

3 个答案:

答案 0 :(得分:0)

您忘了在控制器功能中添加$ http。

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

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

答案 1 :(得分:0)

从此行中删除$http,因为您已在服务中注入<{1}}

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

答案 2 :(得分:0)

在LoginController函数中你没有错误的params。你有请求angular注入$ http和authService。但是你在功能上只有一个参数。有关详细信息,请阅读Angular DI

重写代码:

(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
                })
        };
    }
})();