Skip to content

Commit fc58ac3

Browse files
committed
Add article for form.
1 parent 2079a93 commit fc58ac3

2 files changed

Lines changed: 98 additions & 0 deletions

File tree

README

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
1. [修饰器](https://github.com/tiw/angularjs-tutorial/blob/master/decorator.markdown)
77
1. [在controller间共享数据](https://github.com/tiw/angularjs-tutorial/blob/master/sharing-data-between-controllers.markdown)
88
1. [angularjs事件broadcast 和 emit](https://github.com/tiw/angularjs-tutorial/blob/master/event.markdown)
9+
1. [angularjs 表单](https://github.com/tiw/angularjs-tutorial/blob/master/ng-form.markdown)

ng-form.markdown

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# Form 表单
2+
3+
在开始看angularjs如何处理表单前, 我们先想想处理表单时可能遇到的问题
4+
5+
1. 如何数据绑定
6+
1. 验证表单element e.g. input select etc
7+
1. 显示出错信息
8+
1. 整个Form的验证
9+
1. 避免提交没有验证通过的表单
10+
1. 如果防止多次提交
11+
12+
## form
13+
14+
如果我们引用了anuglajs, 在一个controller的scope下写了一个HTML的form,
15+
其实我们已经在使用 angularjs 的 form directive 了。
16+
17+
下面两种html的写法都会调用 angularjs 的form directive, 并且可以用myForm引用这个
18+
form, 来判断表单是否验证通过。
19+
20+
```html
21+
<form name="myForm"></form>
22+
<ng-form name="myForm"></ng-form>
23+
```
24+
25+
### bind model 如何双向绑定
26+
27+
用 ng-model。 下面的代码把controler scope下的person的name和一个叫做 _personName_
28+
input 绑定到了一起
29+
30+
31+
```html
32+
<form>
33+
<input name="personName" ng-model="person.name"/>
34+
</form>
35+
36+
```
37+
38+
### valid field 验证表单element, 现实出错信息
39+
40+
这里分两部分, 第一部分是angular自带的验证器, 另一部分是自己实现的验证器。
41+
这里只介绍第一种情况。 第二个会在单独的文章里描述。
42+
43+
angularjs 自带了一些html5的验证, 比如: 必填项、email、url (到1.0.7)其实只有这
44+
三个 !!!^ ^
45+
46+
用法一如既往的简单, 都是声明式的. 下面我们定义了一个input,名字叫做 personEmail,
47+
要求必须有输入,而且输入的必须是一个email. 通过变量
48+
```js
49+
myForm.personEmail.$valid
50+
```
51+
我们可以判定这个input的输入是否合法, 从而决定是否显示出错信息。
52+
53+
54+
55+
```html
56+
<form name="myForm">
57+
<input name="personEmail" required type="email" ng-model="person.email"/>
58+
<span ng-show="!myForm.personEmail.$valid">有错</span>
59+
<span ng-show="myForm.personEmail.$error.required">必填</span>
60+
<span ng-show="myform.personEmail.$error.email">email 地址不对</span>
61+
</form>
62+
```
63+
64+
### form是否通
65+
66+
67+
```js
68+
form.$invalid
69+
```
70+
71+
用这个值可以控制提交按键的状态, 值允许valid的form可以提交.
72+
73+
```html
74+
<form name="myForm" ng-submit="save()">
75+
<input name="personEmail" required type="email" ng-model="person.email"/>
76+
<span ng-show="!myForm.personEmail.$valid">有错</span>
77+
<span ng-show="myForm.personEmail.$error.required">必填</span>
78+
<span ng-show="myform.personEmail.$error.email">email 地址不对</span>
79+
<input name="personName" required/>
80+
81+
<input type="submit" ng-disabled="myForm.$invalid"/>
82+
</form>
83+
84+
```
85+
86+
提交的方法, 我们通过ng-submit 绑定到了controller里的save函数上。
87+
88+
89+
form的简单使用就是这样了
90+
91+
*注意*
92+
93+
在至少1.0.7下, input form的名字要用驼峰, 否者有问题。
94+
95+
## demo
96+
97+
[demo](http://plnkr.co/wWi2nmAZuss3AAoSQsyN)

0 commit comments

Comments
 (0)