AngularJS表单基础

作者: 渴望硕壮的成熟 | 来源:发表于2017-03-18 23:15 被阅读95次

实例

HTML代码:

JS代码:

运行效果:

核心要点解析

第一点

注意:这里的form已经不是原生的HTML表单,而是Angular自己的指令了!

由于我们这个例子里面的标签处于ng-app内部,所以它已经被Angular封装过,是一个Angular指令。

参见官方文档:http://docs.angularjs.org/api/ng.directive:form

经过Angular封装之后的form具有哪些特性呢?

首先,HTML原生的form表单是不能嵌套的,而Angular封装之后的form就可以嵌套。

其次,Angular为form扩展了自动校验、防止重复提交等功能。

有人说,如果我想要使用原生的HTML表单,应该怎么做呢?

Angular提供了一个ng-pristine指令,把这个指令写在form标签中,Angular就知道你想使用原生的form标签了。

第二点

Angular对input元素的type进行了扩展,一共提供了以下10种类型:

根据W3C标准的描述,原生HTML里面的input标签有以下10种类型:

可以看到,Angular扩展了number/url/email/rest这4种input类型,当然原生的类型还是可以用的,因此导入了Angular框架之后,我们一共可以使用14种input类型。

PS:Angular扩展的这4种类型在HTML5规范里面已经全部包含(HTML5规范一共提供了20种input类型),详细文档参见这里:http://www.w3school.com.cn/html5/tag_input.asp

第三点

Angular为表单内置了4中CSS样式。

ng-valid 校验合法状态

ng-invalid 校验非法状态

ng-pristine 如果要使用原生的form,需要设置这个值

ng-dirty    表单处于脏数据状态

第四点

Angular在对表单进行自动校验的时候会校验Model上的属性,如果不设置ng-model,则Angular无法知道myForm.$invalid这个值是否为真。

我们可以把以上例子里面的代码改成这样:

也就是把ng-model="user.password"这个属性去掉了,required配置项还保留在这里,然后你会发现,即使你不输入密 码,保存按钮也是可以用的。因为此时myForm.$invalid为false,也就是说如果input不绑定数据模型,校验机制就无法校验这个输入 项。

相关文章

  • AngularJS表单基础

    实例 HTML代码: JS代码: 运行效果: 核心要点解析 第一点 注意:这里的form已经不是原生的HTML表单...

  • AngularJs实现表单文件上传

    AngularJs实现表单文件的上传 一:传统的表单提交方式 二: angularjs处理文件上传 因为是通过an...

  • AngularJS实现表单验证

    本文主要介绍了AngularJS实现表单验证,客户端表单验证是AngularJS里面最酷的功能之一。Angular...

  • angularJS1 提交form表单demo

    angularJS1 提交form表单demo

  • Angularjs1版本使用

    Angularjs1版本使用 Angularjs基础 Angularjs简介 什么是Angularjs Angul...

  • AngularJS中通过指令实现聚焦Focus

    通过AngularJS做项目的时候,特别是表单,需要聚焦,这次就通过AngularJS的指令实现input的聚焦。...

  • AngularJs 表单字段合法性校验

    AngularJs 表单字段合法性校验 基于AngularJS入门与进阶(江荣波 著)这本书的笔记 Angular...

  • Angular

    Form 表单 在开始看angularjs如何处理表单前, 我们先想想处理表单时可能遇到的问题 如何数据绑定 验证...

  • AngularJs进阶-表单与验证

    修真院Web工程师零基础全能课 本节课内容 AngularJs进阶-表单与验证 主讲人介绍 沁修,葡萄藤技术总监 ...

  • 表单状态及验证

    1. 理论知识 $invalid: 一旦表单没有验证通过,AngularJS就会为表单设置为$invalid属性 ...

网友评论

    本文标题:AngularJS表单基础

    本文链接:https://www.haomeiwen.com/subject/hgwpnttx.html