gpt4 book ai didi

javascript - AngularJS 将工厂注入(inject) Controller 奇怪的错误

转载 作者:行者123 更新时间:2023-12-02 16:42:46 24 4
gpt4 key购买 nike

我在 stackoverflow 上读过很多帖子,但没有一个真正有帮助。我有一个奇怪的情况,我需要将 Factory 注入(inject)到 Controller 中并且一切看似正常,但行不通。

这里是工厂:

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 的 Controller 是:

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: Cannot read property 'login' of undefined

因此,由于某种原因,它似乎无法识别 AuthService 工厂。

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

最佳答案

注入(inject)的参数与函数中的参数不匹配。

更改:

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

致:

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

不过我不喜欢使用注入(inject)数组:

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

关于javascript - AngularJS 将工厂注入(inject) Controller 奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27369401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com