无法阅读财产' post'未定义的角度工厂

时间:2016-09-28 12:03:21

标签: angularjs controller jwt factory

我遇到了一个问题,我使用angular并得到控制器将数据发送到我的工厂,我有方法必须将用户名,登录等发布到我的终点,我生成JWT以供进一步使用,但不知怎的,我得到了这个错误,不知道为什么会发生。

知道可能导致这个问题的原因吗?

TypeError:无法读取属性' post'未定义的     在Object.login(Auth.js:22)     在Scope.LoginController。$ scope.signIn(LoginController.js:11)

这是我的工厂要求我的终点

'use strict';
angular.module("Diplomka").factory('oauth', [function oauth($http) {
    'use strict';
    return {
        login: function (username, password) {
            var token = "";
            var config = {
                headers: {
                    "Content-Type": "application/x-www-form-urlencoded"
                }
            }

            var data = {
                username: username,
                password: password,
                grant_type: "password"
            }

            $http.post("/Token", data, config)
                .then(function (response) {
                    token = response.access_token;
                });
        }
    };
}]);

这是我的控制器

    'use strict';
app.controller('LoginController', ['$scope', 'oauth', '$location', LoginController]);
function LoginController($scope, oauth, $location) {


    $scope.username = "";
    $scope.password = "";

    $scope.signIn = function () {
        oauth.login($scope.username, $scope.password);
    }

};

1 个答案:

答案 0 :(得分:0)

你有"数组语法"错误。您的服务名称与作为参数传递给工厂构造函数的变量之间不匹配。

'use strict';
angular.module("Diplomka").factory('oauth', ['$rootScope', '$http', function oauth($scope, $http) { // It should be like this
    // Rest of your factory here
}]);

另外,我认为使用变量名$rootScope$scope注入工厂是一个好主意。相反,我也会将其称为$rootScope并替换您工厂中的所有$scope引用。

'use strict';
angular.module("Diplomka").factory('oauth', ['$rootScope', '$http', function oauth($rootScope, $http) { // It should be like this
    // Rest of your factory here, replacing $scope with $rootScope
}]);