angularjs 迭代器
angularjs 迭代器可以使用管道字符(|)添加到表达式和指令中。
有以下五种转换数据的迭代器:
(1)currency-格式化数字为货币格式。
(2)filter-从数组中选择一个一个子集。
(3)lowercase格式化字符串为小写。
(4)orderBy-根据某个表达式排列数组。
(5)uppercase-格式化字符串为大写。
- 添加到表达式中:
<div ng-app="myApp" ng-controller="personCtrl"> <p>姓名为 {{ lastName | uppercase }}</p> </div>
添加到指令中:
<div ng-app="myApp" ng-controller="namesCtrl"> <ul>
<li ng-repeat="x in names | orderBy:'country'">
{{ x.name + ', ' + x.country }}
</li>
</ul> <div> - 通过实例来理解:
使用起来很方便,这里主要探索一下迭代器的一般原理,到底它是怎么迭代的。这样可以实现更多功能的实用的迭代器。
(1):实现一个字符拼接
(2):实现一个求目标字符串的长度。
<!DOCTYPE html>
<html lang="zh-CN" ng-app="webapp">
<head>
<meta charset="utf-8">
<title>Demo</title>
<link rel="stylesheet" href="../bootstrap.min.css"/>
<style>
body {font-size:20px;}
.ng-scope {
margin: 10px;
padding:10px;
border:1px solid #000;
}
span {margin:0 0 0 40px;color:red;}
li {float:left;margin:0 100px 0 0 ;}
ul {background:lightblue;}
</style>
</head>
<body> <div ng-controller="FilterTestCtrl"> <div>
<h1>Filter</h1>
<ul class="clearfix">
<li>
<h3>迭代器基本操作</h3>
<div>
100|currency<span>{{100|currency:"RMB "}}</span><br />
1404292235912|date:"yyyy-MM-dd HH:mm:ss"<span>{{1404292235912|date:"yyyy-MM-dd HH:mm:ss"}}</span><br />
["aaa","bbb","ccc"]|filter:'c'<span>{{["aaa","bbb","ccc"]|filter:'c'}}</span><br />
[{name:"aaa",age:30},{name:"ccc",age:40}]|filter:'c' <span>{{[{name:"aaa",age:30},{name:"ccc",age:40}]|filter:'c'}}</span><br />
"abcdefg"|limitTo:3<span>{{"abcdefg"|limitTo:3}}</span><br />
["aa","bb","cc","dd"]|limitTo:2<span>{{["aa","bb","cc","dd"]|limitTo:2}}</span><br />
{a:1,b:2}|json<span>{{{a:1,b:2}|json}}</span><br />
"ABCDEFG"|lowercase<span>{{"ABCDEFG"|lowercase}}</span><br />
"abcdefg"|uppercase<span>{{"abcdefg"|uppercase}}</span><br />
16.7563|number:2 <span>{{16.7563|number:2}}</span><br />
167563|number <span>{{167563|number}}</span><br />
[{"age": 20},{"age": 12}] | orderBy:'age'<span>{{ [{"age": 20},{"age": 12}] | orderBy:'age'}}</span><br />
[{"age": 20},{"age": 12}] | orderBy:'age':true <span>{{ [{"age": 20},{"age": 12}] | orderBy:'age':true }}</span><br />
</div>
</li>
<li>
<h3>实现更多实用的filter</h3>
<div>
["a","b","c"]|concat:"," <span>{{["a","b","c"]|concat:","}}</span><br />
"abcdefg"|strlen<span>{{"abcdefg"|strlen}}</span><br />
["a","b","c"]|concat:","|strlen<span>{{["a","b","c"]|concat:","|strlen}}</span><br />
</div>
</li>
</ul>
</div>
</div> <script src="../angular.min.js"></script>
<script src="../demo.js"></script>
</body>
</html>
filter两个参数,第一个参数为绑定的迭代器名称,第二个参数表示对操作对象的处理。
angular.module("webapp",[]); angular.module("webapp")
.filter("concat" , [function() {
return function(arr , concat_char) {
if(!angular.isArray(arr)) {
return '';
}
concat_char = concat_char || ' ';
return arr.join(concat_char);//
};
}]).filter("strlen" , [function() {
return function(str) {
if(!angular.isString(str)) {
return '';
}
return str.length;
};
}]);
查看实例演示结果:http://dreammaker-8-16-qboooogle.c9users.io:8080/
angularjs 迭代器的更多相关文章
- AngularJs学习总结-了解基本特性(-)
现在的前端项目中基本上都会用到angularjs框架,之前并不了解这个框架,也是因为最近接手的项目,所以打算好好的学习下它.之前都是搞pc端,现在接手的是移动端的项目,移动端UI框架用的是ionic+ ...
- Angular系列---- AngularJS入门教程03:AngularJS 模板(转载)
是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...
- Angular系列----AngularJS入门教程01:AngularJS模板 (转载)
是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...
- AngularJS是为了克服HTML在构建应用上的不足而设计的
AngularJS中文网:http://www.apjs.net/ 简介 AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构 ...
- AngularJS 模板
一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模式解耦代码和分离关注点.考虑到这一点,我们用AngularJS来为我们的应用添加一些模型.视图和控制器 ...
- 【转载】图灵AngularJS入门教程
摘自图灵的AngularJS入门教程:http://www.ituring.com.cn/article/13471 感觉非常不错,所以推荐到首页一下! (一)Hello World! 开始学习Ang ...
- AngularJS入门讲解1:angular基本概念
AngularJS应用程序主要有三个组成部分: 模板(Templates) 模板是您用HTML和CSS编写的文件,展现应用的视图. 您可给HTML添加新的元素.属性标记,作为AngularJS编译器的 ...
- [转载]AngularJS入门教程02:AngularJS模板
是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...
- 混合式框架-AngularJS
简单介绍 AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门非常好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也能够认 ...
随机推荐
- ace_admin_1.3.1 wysiwyg 工具条下拉出不来
试了很久才知道是因为<script src="__PUBLIC__/assets/js/bootstrap.min.js"></script> 这个js加 ...
- Linux下内存占用和CPU占用的计算
->使用free命令查看内存使用情况: 1.echo 3 > /proc/sys/vm/drop_caches 2.free 或者使用cat /proc/yourpid/status 来查 ...
- Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用
#!/usr/bin/Python指定用什么解释器运行脚本以及解释器所在的位置 # -*- coding: utf-8 -*-用来指定文件编码为utf-8的 估计有不少人注意过一些python脚本开头 ...
- STM32学习笔记(六) SysTick系统时钟滴答实验(stm32中断入门)
系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难 ...
- window.onload()和$(function(){});的区别
1.window.onload必须等到页面中所有元素加载完之后才会执行(包括图片.视频等)而$(function(){});是在结构绘制完毕之后执行,二者的执行时机是不同的,一般来说后者会首先执行 2 ...
- css优雅降级和渐进增强
今天看前端公众号发布的文章,学到了几个新词 1.modernizr 2.@support 3.优雅降级 其中第三个“优雅降级”,如此文艺的名字居然还是第一次听到.度娘了一下,发现[优雅降级],[渐进增 ...
- 补psp进度(11月4号-9号)
这周psp进度 11月4号 内容 开始时间 结束时间 打断时间 净时间 小伙伴聊天实现 9:45 10:49 0 64m 学习HttpURLConnection 14:13 15:48 10m 85m ...
- 《大道至简》之第一章:编程的精义读后感(JAVA伪代码)
——大道至简之编程的精义读后感(JAVA伪代码) import.java.大道至简.*; import.java.愚公移山.*; public class YuGongYiShan{ 愚公 = {项目 ...
- HTML 段落<p>标签
<p> 标签定义段落. p 元素会自动在其前后创建一些空白.浏览器会自动添加这些空间,您也可以在样式表中规定. 段间距IE默认为19px,通过p的margin-top属性设置FF默认为1. ...
- Cisco IOS IP Service Level Agreementv (IP SLA)
Responder and Control Protocol 1.Responder内嵌在思科目标路由器中的一个组件,用来对IP SLA请求包做应答,通过对应达包添加时间戳属性,以提高测量计算的准确性 ...