【js类库AngularJs】学习angularJs的指令(包括常见表单验证,隐藏等功能)

AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的 是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入、等等。

参考资料:

angularjs中文网:http://www.apjs.net/

angularjs官网:http://angularjs.org

api参考:http://docs.angularjs.cn/api/ng/directive/form

(之所以列出如上这些链接,是因为本人在学习各类语言的过程中,发现入门以后,通过看官方文档,反倒会学习的更快,更准确,更系统。)

从jquery转向angularJs这种双向绑定的js框架时,最让人担忧的是原来处理dom的方式在使用angularJs后,应该怎么适应呢?

本文列出了比较常见的几种处理,包括表单验证,动态设置元素样式,设置元素显示隐藏等功能。

1. input[checkbox]双选框

使用方法:

<input type="checkbox"
ng-model=""
[name=""]
[ng-true-value=""]
[ng-false-value=""]
[ng-change=""]>

使用实例:

<form name="myForm" ng-controller="ExampleController">
Value1: <input type="checkbox" ng-model="value1"> <br/>
Value2: <input type="checkbox" ng-model="value2"
ng-true-value="'YES'" ng-false-value="'NO'"> <br/>
<tt>value1 = {{value1}}</tt><br/>
<tt>value2 = {{value2}}</tt><br/>
</form>

js代码:

 var app = angular.module('formExample', []);
app.controller('ExampleController', ['$scope', function($scope) {
console.log('...');
$scope.value1 = true;
$scope.value2 = 'YES'
}]);

页面效果图:

2.input[date]时间选择器

使用方法:

<input type="date"
ng-model=""
[name=""]
[min=""]
[max=""]
[required=""]
[ng-required=""]
[ng-change=""]>

使用实例:

<form name="dateForm" ng-controller="DateController">
Pick a date in 2015:
<input type="date" id="exampleInput" name="input" ng-model="value"
placeholder="yyyy-MM-dd" min="2015-01-01" max="2015-12-31" required />
<span class="error" ng-show="dateForm.input.$error.required">
Required!</span>
<span class="error" ng-show="dateForm.input.$error.date">
Not a valid date!</span>
<tt>value = {{value}}</tt><br/>
<tt>value = {{value | date: "yyyy-MM-dd"}}</tt><br/>
<tt>dateForm.input.$valid = {{dateForm.input.$valid}}</tt><br/>
<tt>dateForm.input.$error = {{dateForm.input.$error}}</tt><br/>
<tt>dateForm.$valid = {{dateForm.$valid}}</tt><br/>
<tt>dateForm.$error.required = {{!!dateForm.$error.required}}</tt><br/>
</form>

js代码:

function DateController($scope){
$scope.value = new Date(2015, 9, 22);
}

效果图:

3.ng-class 使用angularJs动态设置、更改dom元素的css样式。

css样式:

.strike {
text-decoration: line-through;
}
.bold {
font-weight: bold;
}
.red {
color: red;
}

html代码:

    <p ng-class="{strike: deleted, bold: important, red: error}">Map Syntax Example</p>
<input type="checkbox" ng-model="deleted"> deleted (apply "strike" class)<br>
<input type="checkbox" ng-model="important"> important (apply "bold" class)<br>
<input type="checkbox" ng-model="error"> error (apply "red" class)
<hr>
<p ng-class="style">Using String Syntax</p>
<input type="text" ng-model="style" placeholder="Type: bold strike red">
<hr>
<p ng-class="[style1, style2, style3]">Using Array Syntax</p>
<input ng-model="style1" placeholder="Type: bold, strike or red"><br>
<input ng-model="style2" placeholder="Type: bold, strike or red"><br>
<input ng-model="style3" placeholder="Type: bold, strike or red"><br>

效果图:

4.ng-class-odd/even 分别定义奇数偶数元素的css样式

css样式:

.odd {
color: red;
}
.even {
color: blue;
}

html代码:

    <ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
<li ng-repeat="name in names">
<span ng-class-odd="'odd'" ng-class-even="'even'">
{{name}} &nbsp; &nbsp; &nbsp;
</span>
</li>
</ol>

效果图:

5.ng-click 单击事件

    <button ng-click="count = count + 1" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>

6.ng-show/hide 是否显示,或隐藏。angularJs根据这两个属性的值,对相应元素增加.ng-hide的样式

css样式:

.ng-hide {
line-height:;
opacity:;
padding: 0 10px;
}

html代码:

    <span>Click me: </span><input type="checkbox" ng-model="checked"><br/>
<div>
Show:
<div style="background-color:#ccc" ng-show="checked">
<span> I show up when your checkbox is checked.</span>
</div>
</div>
<div>
Hide:
<div style="background-color:#258be3;color:white" ng-hide="checked">
<span> I hide when your checkbox is checked.</span>
</div>
</div>

最后,全部代码如下,单页test.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>angularJs directive(指令)</title>
<style>
body{font:12px/1.5 tahoma,arial,'Hiragino Sans GB',\5b8b\4f53,sans-serif}
.strike {
text-decoration: line-through;
}
.bold {
font-weight: bold;
}
.red {
color: red;
}
.odd {
color: red;
}
.even {
color: blue;
}
.ng-hide {
line-height: 0;
opacity: 0;
padding: 0 10px;
}
</style>
<script src="//cdn.bootcss.com/angular.js/1.2.19/angular.js"></script>
</head>
<body ng-app="formExample"> <h2>AngularJS Sample Application</h2>
<div>
<h3>input[checkbox]</h3>
<form name="myForm" ng-controller="ExampleController">
Value1: <input type="checkbox" ng-model="value1"> <br/>
Value2: <input type="checkbox" ng-model="value2"
ng-true-value="'YES'" ng-false-value="'NO'"> <br/>
<tt>value1 = {{value1}}</tt><br/>
<tt>value2 = {{value2}}</tt><br/>
</form>
</div> <div>
<hr>
<h3>input[date]</h3>
<form name="dateForm" ng-controller="DateController">
Pick a date in 2015:
<input type="date" id="exampleInput" name="input" ng-model="value"
placeholder="yyyy-MM-dd" min="2015-01-01" max="2015-12-31" required />
<span class="error" ng-show="dateForm.input.$error.required">
Required!</span>
<span class="error" ng-show="dateForm.input.$error.date">
Not a valid date!</span>
<tt>value = {{value}}</tt><br/>
<tt>value = {{value | date: "yyyy-MM-dd"}}</tt><br/>
<tt>dateForm.input.$valid = {{dateForm.input.$valid}}</tt><br/>
<tt>dateForm.input.$error = {{dateForm.input.$error}}</tt><br/>
<tt>dateForm.$valid = {{dateForm.$valid}}</tt><br/>
<tt>dateForm.$error.required = {{!!dateForm.$error.required}}</tt><br/>
</form>
</div>
<script>
var app = angular.module('formExample', []);
app.controller('ExampleController', ['$scope', function($scope) {
console.log('...');
$scope.value1 = true;
$scope.value2 = 'YES'
}]); /* app.controller('DateController', ['$scope', function($scope) {
$scope.value = new Date(2015, 9, 22);
console.log($scope.value);
}]);*/
//上下两种写法都可以
function DateController($scope){
$scope.value = new Date(2015, 9, 22);
}
</script>
<div>
<hr>
<h3>ng-class</h3>
<p ng-class="{strike: deleted, bold: important, red: error}">Map Syntax Example</p>
<input type="checkbox" ng-model="deleted"> deleted (apply "strike" class)<br>
<input type="checkbox" ng-model="important"> important (apply "bold" class)<br>
<input type="checkbox" ng-model="error"> error (apply "red" class)
<hr>
<p ng-class="style">Using String Syntax</p>
<input type="text" ng-model="style" placeholder="Type: bold strike red">
<hr>
<p ng-class="[style1, style2, style3]">Using Array Syntax</p>
<input ng-model="style1" placeholder="Type: bold, strike or red"><br>
<input ng-model="style2" placeholder="Type: bold, strike or red"><br>
<input ng-model="style3" placeholder="Type: bold, strike or red"><br>
</div>
<div>
<hr>
<h3>ng-class-odd/even</h3>
<ol ng-init="names=['John', 'Mary', 'Cate', 'Suz']">
<li ng-repeat="name in names">
<span ng-class-odd="'odd'" ng-class-even="'even'">
{{name}} &nbsp; &nbsp; &nbsp;
</span>
</li>
</ol>
</div>
<div><hr>
<h3>ng-click</h3>
<button ng-click="count = count + 1" ng-init="count=0">
Increment
</button>
<span>
count: {{count}}
</span>
</div>
<div><hr>
<h3>ng-show/hide</h3>
<span>Click me: </span><input type="checkbox" ng-model="checked"><br/>
<div>
Show:
<div style="background-color:#ccc" ng-show="checked">
<span> I show up when your checkbox is checked.</span>
</div>
</div>
<div>
Hide:
<div style="background-color:#258be3;color:white" ng-hide="checked">
<span> I hide when your checkbox is checked.</span>
</div>
</div>
</div>
<br/>
</body>
</html>

目前我了解到,有不少人使用Angular+ionic开发html5版本的app。
更多细节可以参考网站http://www.ionic.wang/start-index.html

另外,还有免费教程: http://www.ionic.wang/course-index.html

推荐的网站:
http://docs.angularjs.cn/api/ (api文档)
http://showcase.ngnice.com/#/home/home (常用实例)
http://docs.ngnice.com/guide/expression (开发文档)

【js类库AngularJs】学习angularJs的指令(包括常见表单验证,隐藏等功能)的更多相关文章

  1. jQuery学习之路(8)- 表单验证插件-Validation

    ▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 ...

  2. js数组,数字函数,字符串函数,表单验证,hashMap,堆栈,日期函数,call函数

    1.javascript的数组API Js代码 收藏代码 //定义数组 var pageIds = new Array(); pageIds.push('A'); 数组长度 pageIds.lengt ...

  3. 【Java EE 学习 33 下】【validate表单验证插件】

    一.validate 1.官方网站:http://jqueryvalidation.org/ 2.文档说明:http://jqueryvalidation.org/documentation/ 3.j ...

  4. JS判断字符串长度,结合element el-input el-form 表单验证(英文占1个字符,中文汉字占2个字符)

    首先看看判断字符串长度的几种方法(英文占1个字符,中文汉字占2个字符) 方法一: function strlen(str) { var len = 0; for (var i = 0; i < ...

  5. angularjs学习第五天笔记(第二篇:表单验证升级篇)

    您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...

  6. angularjs学习第四天笔记(第一篇:简单的表单验证)

    您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...

  7. angularJS中的表单验证(包括自定义验证)

    表单验证是angularJS一项重要的功能,能保证我们的web应用不会被恶意或错误的输入破坏.Angular表单验证提供了很多表单验证指令,并且能将html5表单验证功能同他自己的验证指令结合起来使用 ...

  8. 【AngularJS学习笔记】AngularJS表单验证

    AngularJS表单验证 AngularJS提供了一些自带的验证属性 1.novalidate:添加到HTML的表单属性中,用于禁用浏览器默认的验证. 2.$dirty   表单有填写记录 3.$v ...

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

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

随机推荐

  1. 关于UML图的生成

    想把一个java工程生成UML图非常简单,之前我的eclipse是4.2.0的,没有对应的GEF,所以我索性就直接把工程粘到了My Eclipse中,因为My Eclipse里面有UML自动生成的功能 ...

  2. 如何使用Git命令将项目从github或者服务器上克隆下来

    在本地新建一个文件夹,作为本地仓库,如“demo”.单击右键git Bush here,打开git,输入命令: cd /c/Users/Administrator/Desktop/demo  然后按回 ...

  3. python接口测试,第三方包xlrd和xlutils,怎么安装

    第1个:xlrd的下载地址:https://pypi.python.org/pypi/xlrd/0.9.2 安装过程:下载后解压文件夹,使用cd命令行进入该文件夹后,用命令:python setup. ...

  4. PHP生成唯一的订单号

    记:之前面试的时候被面试官问过简历项目中的订单号我是什么规则生成的,我牛逼吹过头了,乱说了一通,靠!今天在公司的项目中订单号生成,好奇,看了下,就是网上的这种而已. * * uniqid - 官方是这 ...

  5. codeblocks 汉字乱码

    网上有很多方法,不过目测是不同的机子和环境要用不同的设置来应对这种情况 电脑情况: win8 64-bit 装的是codeblocks v12.11 然后在我电脑上正确的配置是setting-edit ...

  6. POJ 2348 Euclid's Game (博弈)

    题意:给定两个整数,两个人轮流操作,每次可以用较大数减去较小数的整数倍,当一个数变成0时,则结束,问谁会胜. 析:很明显如果 a == b 那么就可以直接结束了,那么如果 a > b我们可以交换 ...

  7. HRBUST - 1214 NOIP2000提高组 方格取数(多线程dp)

    方格取数 设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放人数字0.如下图所示(见样例 ,黄色和蓝色分别为两次走的路线,其中绿色的格子为黄色和蓝色共同走过的 ...

  8. conntrack-tools使用

    基础用法 系统配置 ### 开启流数据包统计(packets和bytes) # echo "net.netfilter.nf_conntrack_acct=1" >> ...

  9. 核心容器的两个接口(ApplicationContext和BeanFactory)引发出的问题

    BeanFactory 才是Spring 容器中的顶层接口.ApplicationContext 是它的子接口. ApplicationContext 它在构建核心容器时, 创建对象采取的策略是采用立 ...

  10. Python实现栈、队列

    目录 1. 栈的Python实现 1.1 以列表的形式简单实现栈 1.2 以单链表形式实现栈 2. 队列的Python实现 2.1 以列表实现简单队列 2.2 以单链表形式实现队列   本文将使用py ...