angularjs学习第三天笔记(过滤器第二篇---filter过滤器及其自定义过滤器)
您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点评与赐教。谢谢!
第三天,过滤器第二篇---filter过滤器及其自定义过滤器
一、filter过滤器
filter过滤器我的理解就是一个筛选过滤器,主要是对集合数据进行筛选,其筛选条件支持字符串、对象、函数
字符串:筛选逻辑就是筛选出属性值包含该字符串的对象集合
同时还可以接受一个bool变量的参数(如果为true按照等于筛选)
格式为:{{被筛选的集合对象|filter:'要筛选的字符串':是否严格等于筛选}}
对象:筛选逻辑就是筛选出集合中包含该键值对对应的值的对象集合
格式为:{{被筛选的集合对象|filter:‘筛选条件对象’}}
函数:可以根据需要在函数里面编写筛选逻辑(有点自定义过滤器的效果)
格式为:{{被筛选的集合对象|filter:‘筛选自定义函数名称’}}
关于filter筛选的小练习
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body ng-app="myApp" ng-controller="myContro">
<div>
<h1>filter 过滤器练习</h1>
<div>属性值中包含hong的数据集合:{{dateList|filter:"hong"}}</div>
<div>age中包含hong的数据集合:{{dateList|filter:'xuhongyuan':true }}</div>
<div>age中包含hong的数据集合:{{dateList|filter:'xuhongyuan':false }}</div>
<div>age中包含hong的数据集合:{{dateList|filter:{name:'xuhongyuan'} }}</div>
<div>age中包含hong的数据集合:{{dateList|filter:fun }}</div>
</div>
</body>
</html>
<script src="Scripts/angular.js"></script>
<script type="text/javascript">
var app = angular.module("myApp", []);
app.controller("myContro", function ($scope) {
$scope.dateList = [
{ name: "xurong", age: 35 },
{ name: "xuyanzi", age: 32 },
{ name: "xuhongyuan", age: 30 },
{ name: "xuhongyuanTest", age: 30 },
{ name: "Xuhongyuan", age: 30 },
{ name: "xuhongyong", age: 28 }
]; $scope.fun = function (e) {
return e.age > num;
}
}); </script>
二、json 过滤器
json过滤器可以将一个JSON或JavaScript对象转换成字json符串
三、limitTo 过滤器
limitTo过滤器实际上就是对字符串进行截取
如果参数为正,那么从字符串前面开始截取,如果参数为负,那么从字符串后面开始截取
格式:{{被截取的字符串|limitTo:截取长度}}
limitTo过滤器出了使用于字符串外,数组也是同样的原理
四、orderBy 过滤器
orderBy过滤器可以用表达式对指定的数组进行排序。默认升序
orderBy可以接受两个参数
第一个是必需的(排序字段及其方式,可以接收一个函数)
第二个是可选的(boolean,是否逆向,如果设置为true,则倒序)
关于json 、limitTo、orderBy过滤器的练习
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body ng-app="myApp" ng-controller="myContro">
<div> <h1>json 过滤器练习</h1>
json过滤器可以将一个JSON或JavaScript对象转换成字符串。这种转换对调试非常有帮助:<br />
{{ dateList | json }} <h1>limitTo 过滤器练习</h1>
limitTo过滤器实际上就是对字符串进行截取,如果参数为正,那么从字符串前面开始截取,如果参数为负,那么从字符串后面开始截取<br />
limitTo过滤器出了使用于字符串外,数组也是同样的原理<br />
<div>字符串前面截取保留10位:{{message|limitTo:10}}</div>
<div>字符串后面截取保留7位:{{message|limitTo:-7}}</div>
<div>数组前面截取保留2位:{{dateList|limitTo:2}}</div>
<div>数组后面截取保留2位:{{dateList|limitTo:-2}}</div> <h1>orderBy 过滤器练习</h1>
orderBy过滤器可以用表达式对指定的数组进行排序。默认升序<br />
orderBy可以接受两个参数,第一个是必需的(排序字段及其方式,可以接收一个函数),第二个是可选的(boolean,是否逆向,如果设置为true,则倒序)。<br />
<div>数组根据年龄升序:{{dateList|orderBy:"age"}}</div>
<div>数组根据年龄降序:{{dateList|orderBy:"age":true}}</div> </div>
</body>
</html>
<script src="Scripts/angular.js"></script>
<script type="text/javascript">
var app = angular.module("myApp", []);
app.controller("myContro", function ($scope) {
$scope.dateList = [
{ name: "xurong", age: 35 },
{ name: "xuyanzi", age: 32 },
{ name: "xuhongyuan", age: 30 },
{ name: "xuhongyuanTest", age: 30 },
{ name: "Xuhongyuan", age: 30 },
{ name: "xuhongyong", age: 28 }
];
$scope.message = "大家好好,我是马良,很高兴见到大家";
});
</script>
五、自定义 过滤器
自定义过滤器可以根据实际业务需要编写对于的过滤器逻辑
定义格式为:
app.filter("自定义过滤器名称", function () {
return function (待过滤对象,参数1,参数2....) {
筛选逻辑。。。。
return 最终筛选的符合要求的结果
}
调用方式:{{待过滤对象|自定义过滤器名称:参数1:参数2....}}
自定义过滤器练习:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body ng-app="myApp" ng-controller="myContro">
<div>
<h1>自定义 过滤器</h1>
<div>实现第一个字母大小:{{message|lowercase|myFilter}}</div>
<div>对数据集合按照自定义集合进行筛选:{{dateList|myFilterObj:29}}</div>
</div>
</body>
</html>
<script src="Scripts/angular.js"></script>
<script type="text/javascript">
var app = angular.module("myApp", []);
app.controller("myContro", function ($scope) {
$scope.dateList = [
{ name: "xurong", age: 35 },
{ name: "xuyanzi", age: 32 },
{ name: "xuhongyuan", age: 30 },
{ name: "xuhongyuanTest", age: 30 },
{ name: "Xuhongyuan", age: 30 },
{ name: "xuhongyong", age: 28 }
];
$scope.message = "hello,my name is XuHongYuan!";
}); app.filter("myFilter", function () {
return function (input) {
if (input) {
return input[00].toUpperCase() + input.slice(1);
}
}
}); app.filter("myFilterObj", function () {
return function (input,angNum) {
var outPut = [];
angular.forEach(input, function (obj) {
if (obj.age > angNum) {
outPut.push(obj);
}
})
return outPut;
}
}) </script>
好了,时间也不早了,明天还要上班,今天就先学到这,明天继续学习表单验证,谢谢大家支持与鼓励。
angularjs学习第三天笔记(过滤器第二篇---filter过滤器及其自定义过滤器)的更多相关文章
- angularjs学习第五天笔记(第二篇:表单验证升级篇)
您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...
- angularjs学习第四天笔记(第一篇:简单的表单验证)
您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...
- Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)
原文:Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
- Spring Cloud Alibaba学习笔记(19) - Spring Cloud Gateway 自定义过滤器工厂
在前文中,我们介绍了Spring Cloud Gateway内置了一系列的内置过滤器工厂,若Spring Cloud Gateway内置的过滤器工厂无法满足我们的业务需求,那么此时就需要自定义自己的过 ...
- iOS阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- angularjs学习第七天笔记(系统指令学习)
您好,接着在昨天对简单指令学习了解以后,今天开始学习了解angularjs中的系统指令 系统指令大部分都是以ng开始,这也是为什么在自定义指令命名时不要以ng开始的原因所在 系统指令在学习了分成两个部 ...
- iOS 阶段学习第三天笔记(运算符)
iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...
- angularJS学习(三)——搭建学习环境
1.安装Node.js 和Testacular 1.1. 安装Node.js及配置部分,在另一篇博文:node.js的安装里面讲到了,地址是:http://www.cnblogs.com/tianxu ...
- Python学习笔记【第二篇】:运算符、比较、关系运算符
运算符 python支持以下几种运算符 算术运算符 运算符 描述 实例 + 加 两个对象相加 a + b 输出结果 30 - 减 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 ...
随机推荐
- caffe 每层结构
如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision ...
- linux下git远程仓库的搭建
一.服务器环境 ubuntukylin-16.04-server-amd64 二.远程服务器创建一个名字叫git的用户,专门用于管理git仓库. $ adduser git 三.安装git.服务器端和 ...
- Python 数据结构与算法—— 快排
1. 先从待排序的数组中找出一个数作为基准数(取第一个数即可),然后将原来的数组划分成两部分:小于基准数的左子数组和大于等于基准数的右子数组.然后对这两个子数组再递归重复上述过程,直到两个子数组的所有 ...
- dev gridview自动列宽和单元、行、checkbox选中和多选
#region 自动列宽 for (int I = 0; I < gridView1.Columns.Count; I++) { this.gridView1.BestFitColumns(); ...
- Python入门 ---基础知识
Python入门不知道这些你还是承早放弃吧!真的 Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言 ...
- BZOJ 3940--[Usaco2015 Feb]Censoring(AC自动机)
3940: [Usaco2015 Feb]Censoring Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 723 Solved: 360[Subm ...
- [JavaScript] Nginx实现跨域设置
假如跨域请求的接口为:http://xxx.cn/was5/web/search Nginx配置: 在conf/nginx.conf文件中 location / { root html; index ...
- Linux巩固记录(5) hadoop 2.7.4下自己编译代码并运行MapReduce程序
程序代码为 ~\hadoop-2.7.4\share\hadoop\mapreduce\sources\hadoop-mapreduce-examples-2.7.4-sources\org\apac ...
- Redis---quickList(快速列表)
1. 概述 考虑到链表的附加空间相对太高,prev 和 next 指针就要占去 16 个字节 (64bit 系统的指针是 8 个字节),另外每个节点的内存都是单独分配,会加剧内存的碎片化,影响内存管理 ...
- 【xsy2818】 最近点 动态树分治+可持久化线段树
题目大意:给你一颗n个节点的树,最初点集S为空. 有m次操作:往当前点集S中加入/删除一个点,询问点x至集合S中任意点的最小距离,回到第t次修改点集的操作后的状态. 数据范围:$n,m≤10^5$ 我 ...