如何在控制器内使用Angular输入字段电子邮件验证?

Ale*_*u R 6 angularjs angularjs-filter

我正在尝试将变量验证为Angular控制器内的电子邮件.

var valid = $filter('email')($scope.email);
Run Code Online (Sandbox Code Playgroud)

电子邮件过滤器不存在,生成"未知提供程序错误".从控制器内部访问电子邮件验证的正确方法是什么?

谢谢.

稍后编辑:不要让我创建自定义过滤器,它必须是一种使用角度验证的方式.

kaz*_*uar 7

您可以创建隐藏的输入类型电子邮件:

<input type="email" hidden id="emailValidator" required ng-model="x" />
Run Code Online (Sandbox Code Playgroud)

然后在js中将值设置为该输入并检查有效性:

var validator = $('#emailValidator')[0];
validator.value = "someemail@tovalidate.com";

return validator.checkValidity();
Run Code Online (Sandbox Code Playgroud)

此文档也可能有所帮助:https://docs.angularjs.org/guide/forms


Kha*_* TO 4

ng-disabled您可以通过添加到提交按钮来使用表单并阻止表单提交:

<form name="form">
      <input type="email" ng-model="email" name="email" required/>
      <button type="submit"
        ng-disabled="form.$invalid">Submit</button>
</form>

{{form.email.$valid}}
Run Code Online (Sandbox Code Playgroud)

因为验证的目的是防止提交并显示错误消息。我认为在那里完成它就足够了,而不是处理业务逻辑的控制器。

演示版

  • 没有回答问题。如何访问控制器中的过滤器验证? (2认同)
  • 是什么让您认为我正在尝试进行表单验证?我正在尝试将字符串评估为电子邮件。每个人的答案都与输入字段有关。 (2认同)