AngularJS 1.5 - 在iOS

时间:2018-01-19 16:50:09

标签: javascript ios angularjs forms cordova

我实际上正在使用AngularJS(1.5.11)开发Cordova应用程序。我面临着一个非常奇怪的iOS错误,我不会使用Android(相同的代码)。

我从表单中删除了所有不需要的信息以重现错误(类,指令,额外的div ...),但错误仍然存​​在:(

以下是表格:

<form method="post" ng-submit="$ctrl.login()">
    <input type="email" name="username" value="" required ng-model="$ctrl.username">
    <input type="password" name="password" value="" required ng-model="$ctrl.password">
    <button type="submit">Submit</button>
</form>

我的表单即使无效也会提交。它是一个基本的登录表单,包含两个字段(登录名,密码)和一个按钮。

仅供参考,我的应用中的每个表单都会受到此错误的影响。

我错过了什么吗? 谢谢你的帮助:)

1 个答案:

答案 0 :(得分:1)

您有3个选项

1.-如果表单无效,请禁用提交按钮:

<form name="needNameForm" method="post" ng-submit="$ctrl.login()">
...
<button type="submit" ng-disabled="needNameForm.$invalid">Submit</button>
</form>

2.-如果表格无效,请忽略提交:

<form name="needNameForm" method="post" 
ng-submit="needNameForm.$valid && $ctrl.login()">
...
</form>

3.-检查提交方法的有效性:

<form name="needNameForm" method="post" 
ng-submit="$ctrl.login(needNameForm)">
...
</form>
<!-- for testing purposes you can use this line below -->
<pre>{{needNameForm | json}}</pre>

在您的控制器中:

angular.controller('name', function(){
var vm = this;
vm.login = function(formController){
  if(formController.$valid){
   doStuff();
  }
 }
}

使用第3个选项,如果要验证表单中的每个输入,您将拥有更多控制权, formController 对象将包含每个输入的所有信息,并且您还需要添加名称输入以便您可以获得有关它们的完整信息,以下是有关它的所有信息:https://docs.angularjs.org/api/ng/type/form.FormController