我遇到了一个问题,我使用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);
}
};
答案 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
}]);