AngularJS中出现TypeError: login is not a function错误的排查解决问询
解决AngularJS中TypeError: login is not a function的问题
嘿,我一眼就看到你代码里的问题啦!你遇到的TypeError: login is not a function错误,核心原因是函数定义的语法写错了,咱们一步步来解决:
错误原因分析
你在控制器里给$scope绑定登录方法时,用了错误的语法:
$scope.login() = function() { ... }
这完全不符合JavaScript的函数赋值规则——给对象的属性赋值函数,应该直接写属性名 = 函数体,而不是给属性加括号(加括号是调用函数的写法)。这种错误写法会导致$scope.login根本没有被正确定义成一个可调用的函数,自然会触发“不是函数”的错误。
另外还有个小问题:你用$log.console(response)来打印日志,但AngularJS的$log服务里并没有console方法,正确的写法是$log.log(response)。
修正后的完整代码
把这两处错误改过来,代码就正常了:
var myModule = angular.module("myModule",[]); myModule.controller('addLoginController',function($scope,$http,$log){ // 修正:去掉login后面的括号,正确赋值函数 $scope.login = function() { $scope.user = $http({ method: 'POST', url: 'http://127.0.0.1:8000/users', data: { email: $scope.email, password:$scope.password }, headers: {"Content-Type": 'application/json'} }) .then(function(response){ $scope.userData = response.data; $scope.status = response.status; $scope.headers = response.headers; $scope.config = response.config; // 修正:用$log.log替代错误的$log.console $log.log(response); }, function (response) { $scope.error = response.data; alert("unsuccessful call"); }); } });
额外验证要点
- 确保页面上触发登录的元素(比如按钮)是用
ng-click="login()"来绑定方法的,语法没有错误 - 确认你的AngularJS模块和控制器已经正确挂载到页面上,没有其他初始化类的问题
内容的提问来源于stack exchange,提问作者Jasitharan
相关产品推荐
相关产品推荐

