通过单击 AngularJS 控制器调用函数时出错?
Error When Calling Function Via ng-click On AngularJS Controller?
代码可以在http://ec2-52-1-22-32.compute-1.amazonaws.com/
查看
在登录表单中,我通过点击登录表单的按钮来调用 AuthController 当前简单的 login() 函数。当我调用此函数时,我在控制台中收到无法破译的错误。在 FF 中,我收到“args is null
”错误。在 Chrome 中,错误显示为“TypeError: Cannot read property '0' of null
”。不确定如何调试?为什么不起作用?
PS: 您可以输入任何用户名或密码。
在 AuthService 中,您有一个“/”而不是“.”。 - 这是开始一个正则表达式模式,可能会搞乱你应用程序的其余部分:
login: function(data) {
return $http/post('/api/auth/login')
},
其他一些可能导致它的问题。您在 html 中使用 "controller as",但控制器仍在使用 $scope:
ng-controller="AuthController as auth"
您还在引用 objects/functions,就好像它们在 $scope 上一样...例如 ng-click="login()" 应该是 ng-click="auth.login()"。
ng-click="login()"
中的 login
指的是 "login" 形式,而不是 $scope.login
函数。
这是你拥有的:
<div ng-controller="AuthController as auth">
<form name="login">
<button ng-click="login()">login</button>
</form>
</div>
在控制器中你有:
$scope.login = function(){
}
作用域上发布的表单 login
变量隐藏了控制器中定义的 login
函数。换句话说,Angular 失败,因为它没有调用 ng-click="login()"
.
的函数
修复方法:
#1 使用 ControllerAs 语法:
this.login = function(){
}
和
<button ng-click="auth.login()">
或者,#2 - 重命名函数或表单:
<form name="loginForm">
<button ng-click="login()">login</button>
</form>
代码可以在http://ec2-52-1-22-32.compute-1.amazonaws.com/
查看在登录表单中,我通过点击登录表单的按钮来调用 AuthController 当前简单的 login() 函数。当我调用此函数时,我在控制台中收到无法破译的错误。在 FF 中,我收到“args is null
”错误。在 Chrome 中,错误显示为“TypeError: Cannot read property '0' of null
”。不确定如何调试?为什么不起作用?
PS: 您可以输入任何用户名或密码。
在 AuthService 中,您有一个“/”而不是“.”。 - 这是开始一个正则表达式模式,可能会搞乱你应用程序的其余部分:
login: function(data) {
return $http/post('/api/auth/login')
},
其他一些可能导致它的问题。您在 html 中使用 "controller as",但控制器仍在使用 $scope:
ng-controller="AuthController as auth"
您还在引用 objects/functions,就好像它们在 $scope 上一样...例如 ng-click="login()" 应该是 ng-click="auth.login()"。
ng-click="login()"
中的 login
指的是 "login" 形式,而不是 $scope.login
函数。
这是你拥有的:
<div ng-controller="AuthController as auth">
<form name="login">
<button ng-click="login()">login</button>
</form>
</div>
在控制器中你有:
$scope.login = function(){
}
作用域上发布的表单 login
变量隐藏了控制器中定义的 login
函数。换句话说,Angular 失败,因为它没有调用 ng-click="login()"
.
修复方法:
#1 使用 ControllerAs 语法:
this.login = function(){
}
和
<button ng-click="auth.login()">
或者,#2 - 重命名函数或表单:
<form name="loginForm">
<button ng-click="login()">login</button>
</form>