Git Product home page Git Product logo

angular-form's Introduction

angular-form


##

angularjs表单基础

---

angularjs在表单方面最明显也最实用的特点,就是扩展了很多校验方面的指令,结合一些其他内置指令,可以让表单基本交互的实现变得非常简单。下面一个最简单的例子,大家随意感受下:


<iframe width="100%" height="300" src="http://jsfiddle.net/ddcat1115/rLgY9/28/embedded/html,css,result" allowfullscreen="allowfullscreen" frameborder="0"></iframe>
可以看到,不用任何js,也能实现基本的校验,报错展示,防重复提交等表单所需的基本功能,这依赖于angular对form及其内部的表单控件的扩展。

###

(一)对form的扩展
位于ng-app内部的form标签,已经被包装过,实际上是一个angular内置指令,它创建了一个FormController1 实例 ,该对象(form)具有一些原生form不具备的属性和方法

  • 可嵌套
  • 具有的属性
    *
    $pristine——没有填写记录,bull
    *
    $dirty——有填写记录,bull
    *
    $valid——通过验证,bull
    *
    $invalid——未通过验证,bull
    *
    $error——错误信息,对象,主要包含以下几个属性,属性值为对应字段列表(貌似直接用form的$error属性的比较少)
    *
    email
    *
    max
    *
    maxlength
    *
    min
    *
    minlength
    *
    number
    *
    pattern
    *
    required
    *
    url
在html代码里用form的name值就可获取该对象,进一步可获取其属性(如:formName.$valid),结合ng-show,ng-disabled等指令即可实现报错展示,按钮置灰等基本效果
- <div>可以给form标签加上“novalidate”,用来禁掉html5内置校验</div>
- <div>如果要用原生form,可以给form标签加上“ng-pristine”指令</div>

###

(二)对表单控件的扩展

跟form一样,表单内的所有控件也不再是原生控件,而是NgModelController2 的实例,它同样拥有上面form的五个属性

angular对input的type属性进行了扩展,主要包含以下几种
  • number,附带多了max , min 属性
  • url
  • email
此外可用的控件属性主要有
  • ng-model——绑定的数据
  • required——是否必填
  • ng-minlength——最小长度
  • ng-maxlength——最大长度
  • ng-pattern——匹配模式
  • ng-change——值变化时的回调
在代码里用formName.inputName即可获取该控件对象,进一步可获取其各个属性,结合ng-show等指令即可实现大部分校验功能
- <div>控件必须加ng-model,否则无法校验</div>

###

(三)内置css

内置了四种动态类
  • ng-valid——验证通过时自动添加
  • ng-invalid——验证失败时自动添加
  • ng-pristine——未填入任何数据前
  • ng-dirty——填过数据后
可以通过设置类似 input.ng-valid{color:green;} 来实现表单样式的状态转换

###

(四)自定义指令…

可以通过自定义指令的方式来进一步扩展校验规则,表单控件等,不过那是另一个故事了,待续…

Footnotes

  1. http://docs.angularjs.org/api/ng/type/form.FormController

  2. http://docs.angularjs.org/api/ng/type/ngModel.NgModelController

angular-form's People

Contributors

ddcat1115 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.