在HTML中,用户通过input
, select
, textarea
等元素进行输入,我们通常用表单来包装和管理这些控件。客户端表单验证非常重要,可以及时地为用户提供表单验证信息。但客户端表单验证只是为了增强用户体验,服务器端验证仍然是必要的。
AngularJS最大的特点便是数据绑定。利用Angular在客户端脚本中构建MVC框架,Model和View之间可以实现双向绑定。因此AngularJS的表单验证可以做到实时的用户反馈。
事实上,正是因为实时的用户反馈这个神奇的特性,我们团队在 http://tianmaying.com 中也继续引入了AngularJS,尽管此时我们对单页应用已经不感兴趣。
一个简单的表单
Angular是模块化的,每个APP都是一个Angular Module。我们知道Module下可以包含这样四种内容:
- 控制器(controllers),用来完成页面逻辑,不包含DOM操作、资源获取。
- 服务(services),用来提供资源访问和获取,控制资源的访问,维护数据一致性。
- 过滤器(filters),用来格式化数据显示,很多第三方插件以提供
filter
为主,例如angular-moment
。 - 语义标签(directives),增强的HTML标签,DOM操作都应当抽象为
directive
。
Angular表单其实是Angular提供的Directive,它有一个别名叫ng-form
。是这个Directive实例化了一个FormController
来负责表单内的页面逻辑(主要是表单验证)。
<div ng-app>
<ng-form name=someForm>
<input name="username" type="text" ng-model="user.username" pattern=