AngularJS 表单
    AngularJS使用了MVX的结构,我们可以是传统的表单更加强大。比如过去我们得自己写一大堆验证,比过过去我们得自己转换用户的输入,
现在这些工作全部可以交给AngularJS. 我们唯一要关心的就是model中的值。
在AngularJS中 ,form和input其实也是directive。(是不是很奇怪!) 这两个家伙就是传统form的加强版。
    使用input标签
    ng-model input专用directive,双向绑定,配合其他功能提供输入验证和转换功能。
    required 表示不能为空;ng-minlength 表示最小长度; ng-maxlength 表示最大长度;ng-pattern="/^[a-zA-Z]*$/" 表示必须符合的正则.
    现有如下代码:
        <input ng-model="user.name" required ng-minlength="3" ng-maxlength="10" ng-pattern="/^[a-zA-Z]*$/" />
    如果输入"ab",那么user.name中其实是空的,因为ng-minlength验证没通过。同理如果ng-maxlength、ng-pattern没有通过,user.name
中都是空值。所以我们可以直接拿来用user.name而不必担心中会有invalid的值。

使用checkbox
    checkbox有true和false两个值。 当然,如果加了ng-true-value和ng-false-value两个directive,可以改变默认的值。
    如下,如果选中该checkbox,user.admin的值会是"admin",没选中会是"normal"
    <input type="checkbox" ng-model="user.admin" ng-true-value="admin" ng-false-value="normal"/>

使用radio
    没什么好说的,如下代码:
    <input type="radio" ng-model="user.sex" value="male"/>
    <input type="radio" ng-model="user.sex" value="female"/>
    
使用select
    简单用法:
    <select ng-model="user.sex">
            <option style="display:none" value=""></option> //如果不加这一行,那么会出现三个选项,第一项为空
            <option value="m">Male</option>
            <option value="f">Female</option>
    </select>
    复杂用法:
    首先 $scope.users=[{name:'Mike',email:'mike@qq.com'},{name:'jack',emial:'jack@163.com'}]
    然后:<select ng-options="u.email as u.name for u in users">
            <option style="display:none" value=""></option>
          </select>
    意思是在select中显示的是每个user的name,但是选中后的值却是每个user的email

深入了解ngModel
    每一个ngModel都会新建一个ngModelController的对象。该对象可以访问该input上的其他directive。
    ngModel是双向绑定的,相应的ngModelController中有两个数组:$formatters 和$parsers。$formatters 用来把model中的值
    转换为显示在view上的值;$parsers则相反。
    每一个form都对应一个ngFormController对象。ngModelController作为ngFormController对象的属性。
    假设有如下代码:
    <form name='form1'>
        <input name='input1' type='email' required/>
    </form>
    那么 $scope.form1就是ngFormController对象;$scope.form1.input1就是ngModelController的对象。
    那么通过$scope.form1.$valid就可以知道这个form有没有通过验证;$scope.form1.input1.$valid就可以知道这个input有没有通过验证。
    但是这个input上其实有两个验证:一个是type='email';一个是 required。怎么知道那个验证有没有通过? 可以使用
    $scope.form1.input1.$error['required'] 和$scope.form1.input1.$error['email']这两个布尔值知道。

AngularJs(Part 9)--AngularJS 表单的更多相关文章

  1. AngularJs 入门系列-2 表单验证

    对于日常的开发来说,最常见的开发场景就是通过表单编辑数据,这里涉及的问题就是验证问题. angularjs 内置已经支持了常见的验证方式,可以轻松实现表单验证. 1. 绑定 为了方便,我们在 $sco ...

  2. 在AngularJS中实现自定义表单验证

    除了一些已经定义好了的验证(例如 必填项.最小长度.最大长度)之外,更常用的,还是需要我们自己定义表单验证,这样才能对于项目中遇到的很多非常规问题给出自己的合适的解决方案. 在表单中控制变量 表单的属 ...

  3. AngularJS中使用的表单验证

    Reference: http://www.tuicool.com/articles/2Qbiqi 客户端表单验证是AngularJS里面最酷的功能之一. AngularJS表单验证可以让你从一开始就 ...

  4. (译) 在AngularJS中使用的表单验证功能【转】

    验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义 ...

  5. (译) 在AngularJS中使用的表单验证功能

    验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义 ...

  6. (转)AngularJS中使用的表单验证

    原文  http://www.cnblogs.com/woshinidezhu/p/Form-validation-with-AngularJS.html 客户端表单验证是AngularJS里面最酷的 ...

  7. AngularJS学习之 登录表单 清爽验证(边学边更新)

    注册过程的确好多需要验证的,但是注册成功之后的登录就简单多了, 只要用户 输入 用户名和密码, ajax向后台提交登录请求, 根据返回的结果确定用户名或者密码是否正确即可登录. 所以这个登录表单的验证 ...

  8. AngularJS使用ngMessages进行表单验证

    名称为"ngMessages"的module,通过npm install angular-messages进行安装.在没有使用ngMessages之前,我们可能这样写验证: < ...

  9. AngularJS学习笔记(二) 表单验证案例(ng-repeat/filter)

    这一节相对来说需要理解的东西不是太多,记住了那些api就行了. 还是一个案例(同样来自miaov),一个表单验证,先上代码,然后再对对应的内容进行解释. <!DOCTYPE html> & ...

  10. MVC + AngularJS 初体验(实现表单操作)

    AngularJS AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序(SPAs:Single Page Applications). Ang ...

随机推荐

  1. ssl和tls

    HTTP 是一个网络协议,是专门用来帮你传输 Web 内容 SSL 是Secure Sockets Layer 为啥要发明 SSL 这个协议捏?因为原先互联网上使用的 HTTP 协议是明文的,存在很多 ...

  2. python3 包

    python3 包 执行文件为test.py,内容 #test.py import aaa 同级目录下创建目录aaa,然后自建空__init__.py(或者干脆建包) 需求:验证导入包就是在导入包下的 ...

  3. ios9 3dtouch 博客

    http://my.oschina.net/u/2340880/blog/511509#OSC_h3_3

  4. 斐波那契 (Fibonacci)数列

    尾递归会将本次方法的结果计算出来,直接传递给下个方法.效率很快. 一般的递归,在本次方法结果还没出来的时候,就调用了下次的递归, 而程序就要将部分的结果保存在内存中,直到后面的方法结束,再返回来计算. ...

  5. 很实用的HTML5+CSS3注册登录窗体切换效果

    1. [代码]3个很实用的HTML5+CSS3注册登录窗体切换效果 <!DOCTYPE html><!--[if lt IE 7 ]> <html lang=" ...

  6. 学习c++的优秀博客(转)

    http://zhedahht.blog.163.com/  本博客讨论程序员面试题,并主要集中在C/C++.数据结构算法和算法上.http://saturnman.blog.163.com/ sat ...

  7. Hibernate学习---第十节:Hibernate之QBC、样例查询&离线查询

    一.QBC (Query By Criteria) 主要有Criteria,Criterion,Oder,Restrictions类组成 1.java 代码如下: /** * 查询所有 */ @Tes ...

  8. Finding Similar Items 文本相似度计算的算法——机器学习、词向量空间cosine、NLTK、diff、Levenshtein距离

    http://infolab.stanford.edu/~ullman/mmds/ch3.pdf 汇总于此 还有这本书 http://www-nlp.stanford.edu/IR-book/ 里面有 ...

  9. 源码安装postgres10 in centos6.4

    文件夹路径 程序目录 /usr/pgsql 数据目录/usr/local/pgdata 准备工作 获得源码 mkdir /opt/soft_bak cd /opt/soft_bak wget http ...

  10. Oracle中spool命令实现的两种方法比较

    ---恢复内容开始--- 要输出符合要求格式的数据文件只需在select时用字符连接来规范格式.比如有如下表 SQL>; select id,username,password from myu ...