我收到“Base64.encode不是函数”错误,但我不知道原因:
以下控制器“login-controller”使用LoginService:
angular.module('app')
.controller('login-controller',
['$scope', '$location', '$http', 'LoginService',
function($scope, $location, $http, LoginService) {
...
if(LoginService.login($scope.user.name, $scope.user.password) == true)
{
$location.path('/chooseMandantAsk')
}
else
{
$scope.wrongCredentials = true;
}
...
}]);
以下LoginService使用Service Base64的功能:
angular.module('app')
.service('LoginService', ['$location', '$http', 'Base64', function ($http, Base64) {
...
this.login = function (name, password){
user.auth= "Basic " + Base64.encode(name + ":" + password);
$http.defaults.headers.common.Authorization = user.auth;
$http.get(url+'/login')
.success(function(){
return true;
})
.error(function(){
user.auth = "";
delete $http.defaults.headers.common['Authorization'];
return false;
});
};
...
}]);
Base64服务有一个名为encode的方法:
angular.module('app').factory('Base64', function () {
var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
return {
encode: function (input) {
...
return output;
},
decode: function (input) {
...
return output;
}
};
});
找到了Base64服务,之前我以另一种方式使用了Base64.encode方法,它可以工作。
有人可以帮助我并告诉我,这个错误意味着什么?
BR
的Matthias
答案 0 :(得分:3)
我认为在注入依赖项时缺少$ location -
service('LoginService', ['$location', '$http', 'Base64', function ($location, $http, Base64)
这就是你收到错误的原因。
答案 1 :(得分:3)
您的登录服务声明缺少$ location依赖关系,应该是:
angular.module('app')
.service('LoginService', ['$location', '$http', 'Base64', function ($location, $http, Base64) {