Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS注入工厂进入控制器奇怪错误_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS注入工厂进入控制器奇怪错误

Javascript AngularJS注入工厂进入控制器奇怪错误,javascript,angularjs,Javascript,Angularjs,我读过很多关于stackoverflow的帖子,其中没有一篇真的很有帮助。 我有一个奇怪的情况,我需要将工厂注入控制器和 一切似乎都很正常,但都不起作用 这里是工厂: zimmerApp.factory('AuthService', [function ($http, $sanitize) { var sanitizeCredentials = function (credentials) { return { email: $sanitize(credentials.e

我读过很多关于stackoverflow的帖子,其中没有一篇真的很有帮助。 我有一个奇怪的情况,我需要将工厂注入控制器和 一切似乎都很正常,但都不起作用

这里是工厂:

zimmerApp.factory('AuthService', [function ($http, $sanitize) {
var sanitizeCredentials = function (credentials) {
    return {
        email: $sanitize(credentials.email),
        password: $sanitize(credentials.password),
        csrf_token: credentials.csrf_token
    };
};
return {
    login: function (credentials) {
        var login = $http.post("/login", sanitizeCredentials(credentials));
        login.success(cacheSession);
        login.error(loginError);
        return login;
    }
};
}]);
我需要在其中使用AuthService的控制器是:

zimmerApp.controller('loginCtrl', ['$scope', 'AuthService',
    function ($scope, $location, AuthService) {
    var xhReq = new XMLHttpRequest();
    xhReq.open("GET", "http://" + window.location.hostname + ":8000/auth/token", false);
    xhReq.send(null);

    $scope.error = false
    $scope.credentials = {
        username: '',
        password: '',
        csrf_token: xhReq.responseText
    };

    $scope.login = function (credentials) {
        AuthService.login($scope.credentials)
            .success(function () {
                $location.path('/');
            })
            .error(function (err) {
                console.log('error')
            });
    }
}]);

我得到的错误是

TypeError:无法读取未定义的属性“login”

因此,出于某种原因,它似乎无法识别AuthService factory


有人知道我能做些什么来解决这个问题吗,我真的不知道了。

正在注入的参数与函数中的参数不匹配

更改:

 zimmerApp.controller('loginCtrl',
     ['$scope', 'AuthService',
      function ($scope, $location, AuthService) {
致:

但我不喜欢使用注入阵列:

zimmerApp.controller('loginCtrl',
    function ($scope, $location, AuthService) {

不使用注入数组是可以的,除非你缩小/丑化你的代码,这是一个不使用数组的好提示。这将是非常有用的。这就是为什么很棒的人制作了像grunt ng annotate这样的东西,这样你就可以在压缩代码之前添加这些注释了。我不知道,我还是个新手,所以我不太了解那些让生活更轻松的酷libs。
zimmerApp.controller('loginCtrl',
    function ($scope, $location, AuthService) {