Angular - TypeError:XX 不是函数 [英] Angular - TypeError: XX is not a function
问题描述
也许我缺少某种属性,但我正在关注这个项目 并且我在控制器中收到此错误.
Maybe I'm missing some kind of property, but I'm follow this project and I'm getting this error in my controller.
TypeError: loginService.signin is not a function
这是我的 controller.js
angular.module('appcontrollers', []).controller('LoginController', ['$rootScope', '$scope', '$http', '$location', '$localStorage', 'loginService',
function ($rootScope, $scope, $http, loginService) {
$scope.signin = function() {
console.log("username: " + $scope.username);
console.log("pass: " + $scope.password);
var formData = {
username: $scope.username,
password: $scope.password
};
// ERROR IN THIS LINE
loginService.signin(formData, function(res) {
console.log("asdf");
if (res.type == false) {
console.log(res.data);
} else {
$localStorage.token = res.data.token;
console.log("Window location /");
}
}, function() {
$rootScope.error = "Error en el logueo del usuario";
});
// Setting Token:
$scope.token = $localStorage.token;
}
}])
这是我的 service.js
'use strict';
angular.module('app-services', [])
.factory('loginService', ['$http', '$localStorage', function ($http, $localStorage) {
console.log('services - loginService');
var baseUrl = "http://angular-restful-auth.herokuapp.com";
function changeUser(user) {
console.log('1');
angular.extend(currentUser, user);
}
function urlBase64Decode(str) {
console.log('2');
var output = str.replace('-', '+').replace('_', '/');
switch (output.length % 4) {
case 0:
break;
case 2:
output += '==';
break;
case 3:
output += '=';
break;
default:
throw 'Illegal base64url string!';
}
return window.atob(output);
}
function getUserFromToken() {
console.log('3');
var token = $localStorage.token;
var user = {};
if (typeof token !== 'undefined') {
var encoded = token.split('.')[1];
user = JSON.parse(urlBase64Decode(encoded));
}
return user;
}
// Set user token.
var currentUser = getUserFromToken();
return {
save: function(data, success, error) {
$http.post(baseUrl + '/signin', data).success(success).error(error)
},
signin: function(data, success, error) {
$http.post(baseUrl + '/authenticate', data).success(success).error(error)
},
me: function(success, error) {
$http.get(baseUrl + '/me').success(success).error(error)
},
logout: function(success) {
changeUser({});
delete $localStorage.token;
success();
}
};
}
]);
我的应用程序一直工作,直到用户从表单中按下名为 signin()
的提交按钮.然后我在控制台中得到了这两行,其中包含正确的数据
My application works until the user press the submit button called signin()
from a form. Then I got this two lines in my console with the correct data
>> username: somename
>> pass: somepassword
然后出现错误.谁能帮我传递这个 signin()
函数?
And after that the error shows up. Can anyone help me in order to pass this signin()
function?
推荐答案
你正在搞乱依赖注入数组,当你在函数中使用它时,它应该遵循正确的依赖顺序.
You are messing with Dependency injection array, that should follow correct order of dependency when you are using it in a function.
代码
angular.module('appcontrollers', []).controller('LoginController', ['$rootScope', '$scope', '$http', '$location', '$localStorage', 'loginService',
function ($rootScope, $scope, $http, $location, $localStorage, loginService) {
这篇关于Angular - TypeError:XX 不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!