通过ng-click AngularJS控制器调用功能时出错?

alp*_*ogg 0 javascript controller angularjs

该代码可在http://ec2-52-1-22-32.compute-1.amazonaws.com/查看.

在登录表单中,我通过ng-单击登录表单的按钮来调用AuthController的当前简单login()函数.当我调用此函数时,我在控制台中收到一个我无法解密的错误.在FF中,我收到" args is null"错误.在Chrome中,错误显示为" TypeError: Cannot read property '0' of null".不知道如何调试这个?为什么不起作用?

PS:您可以输入任何用户名或密码.

New*_*Dev 5

loginng-click="login()"是指"登录"的形式,而这给$scope.login功能.

这就是你拥有的:

<div ng-controller="AuthController as auth">  
   <form name="login">
     <button ng-click="login()">login</button>
   </form>
</div>
Run Code Online (Sandbox Code Playgroud)

在控制器中你有:

$scope.login = function(){
}
Run Code Online (Sandbox Code Playgroud)

login在作用域上发布的表单变量隐藏login了控制器中定义的函数.换句话说,Angular失败,因为它没有调用函数ng-click="login()".

修复方法:

#1使用ControllerAs语法:

this.login = function(){
}
Run Code Online (Sandbox Code Playgroud)

<button ng-click="auth.login()">
Run Code Online (Sandbox Code Playgroud)

或者,#2 - 重命名函数或表单:

<form name="loginForm">
   <button ng-click="login()">login</button>
</form>
Run Code Online (Sandbox Code Playgroud)