AngularJS表单基础

原文作者:大漠穷秋

原文地址:http://damoqiongqiu.iteye.com/blog/1920191


实例

 

HTML代码:

 

<html ng-app='TestFormModule'>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <script src="../angular-1.0.3/angular.min.js"></script>
    </head>
    <body>
        <form name="myForm" ng-submit="save()" ng-controller="TestFormModule">
              <input name="userName" type="text" ng-model="user.userName" required/>
              <input name="password" type="password" ng-model="user.password" required/>
              <input type="submit" ng-disabled="myForm.$invalid"/>
        </form>
    </body>
    <script src="FormBasic.js"></script>
</html>

 

JS代码:

 

var appModule = angular.module('TestFormModule', []);
appModule.controller("TestFormModule",function($scope){
    $scope.user={
        userName:'damoqiongqiu',
        password:''
    };
    $scope.save=function(){
        alert("保存数据!");
    }
});

 

运行效果:

 



 

 

核心要点解析

 

第一点

 

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

 

由于我们这个例子里面的<form>标签处于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种类型:

 

text
number
url
email
radio
checkbox
hidden
button
submit
reset

 

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

 

button
checkbox
file
hidden
image
password
radio
reset
submit
text

 

可以看到,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这个值是否为真。

 

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

 

<input name="password" type="password" required/>

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AngularJS是一种流行的JavaScript框架,用于构建单页应用程序。以下是学习AngularJS的一条常见路线图: 1. 基础知识: - 学习HTML、CSS和JavaScript的基础知识,包括DOM操作和事件处理等。 -View-ViewModel)等设计模式的概念。 2. AngularJS核心概念: - 学习AngularJS的核心概念,如指令(Directives)、控制器(Controllers)、作用域(Scope)和数据绑定(Data Binding)等。 - 理解AngularJS的依赖注入(Dependency Injection)机制。 3. AngularJS模块和路由: - 学习如何使用AngularJS的模块(Modules)来组织代码。 - 学习AngularJS的服务(Services)和工厂(Factories)的概念和用法。 - 理解如何使用服务和工厂来实现数据共享和业务逻辑。 5. 表单验证和表单处理: - 掌握AngularJS表单验证功能,包括内置验证器和自定义验证器。 - 学习如何使用AngularJS处理表单数据,包括表单提交和数据绑定。 6. AJAX和RESTful API: - 学习如何使用AngularJS进行AJAX请求,与后端服务器进行数据交互。 - 理解如何使用AngularJS与RESTful API进行通信,实现前后端的数据交互。 7. 测试和调试: - 学习如何使用AngularJS的测试框架进行单元测试和端到端测试。 - 掌握调试AngularJS应用程序的技巧和工具。 8. 进阶主题: - 学习AngularJS的高级特性,如动画(Animations)、国际化(Internationalization)和安全性等。 - 探索AngularJS的生态系统,了解相关的库和工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值