【发布时间】:2014-09-10 16:20:39
【问题描述】:
我有一个要使用 Angular 控制器验证的 html 表单。如果验证失败,我将某些类应用于 html。如果它通过了,我想让表单自己提交。虽然这看起来很简单,但我还没有找到一种简单的方法来做到这一点。我发现的一种方法使用$scope.$broadcast 函数来告诉表单提交,但是,我使用Controller as Ctrl 语法所以我宁愿不使用$scope。无论如何要从控制器提交表单吗?
我的简化 HTML
<form ng-controller="LoginCtrl as login" ng-submit="login.validate()" method="post">
<input ng-model="login.username" />
<input ng-model="login.password" />
</form>
JS
var app = angular.module("app", []);
app.controller("LoginCtrl", ["$http", function($http) {
this.username = "";
this.password = "";
this.validate = function() {
//validate
if (valid) {
// somehow form.submit()
}
};
}]);
我对 Angular 有点陌生,所以如果这是一个明显的问题,请原谅我;)
编辑:
我需要澄清一下,我希望避免使用 AJAX 提交表单(即$http.post)。基本上我想要的是相当于调用form.submit()的控制器。
用例: 让我准确解释一下我要做什么。
User arrives at login page
User enters credentials
User hits Submit
Controller asks server (using api path) if the credentials are valid
if valid then
Tell the form to submit to regular login path // how?
else
Immediately tell the user they submitted invalid credentials
这样,如果用户输入了错误的凭据,他们就会立即获得反馈。 对于实际的表单提交,所有这些我都实现了except。
【问题讨论】:
-
请查看this blog,了解如何在 angularjs 中验证表单
-
非常有帮助!我肯定会考虑使用指令进行验证。但是,它并没有回答我最初在 Angular 中以编程方式提交表单的问题。
-
为此,您必须使用 $http,将数据从登录控制器发布到服务器
标签: javascript html forms angularjs