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>

  好了,时间也不早了,明天还要上班,今天就先学到这,明天继续学习表单验证,谢谢大家支持与鼓励。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏计算机编程

ionic 2.x の初见与坑

<h3>1、简单介绍:</h3> <p >博主是从来没有碰过angularJS 1.x与ionic 1.x的初学者,面对它们两者同时进入2.0时代(隔壁vue...

20620
来自专栏极客编程

ionic之AngularJS扩展2 移动开发

可能你没有注意过,HTML中常用的script标签在AngularJS中被重新定义了: 除了原来的脚本声明功能之外,如果script元素的type属性 定义为t...

15120
来自专栏极客编程

AngularJS2.0 教程系列(一)

AngularJS当初是提供给设计人员用来快速构建HTML表单的一个内部工具。随着时间的推移,各种特性 被加入进去以适应不同场景下的应用开发。然而由于最初的架构...

8510
来自专栏陈纪庚

vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也...

22030
来自专栏angularejs学习篇

angularjs小练习(分别通过ng-repeat和ng-option动态生成select下拉框)

10000
来自专栏angularejs学习篇

angularjs通过ng-change和watch两种方式实现对表单输入改变的监控

angularjs通过ng-change和watch两种方式实现对表单输入改变的监控

32210
来自专栏程序员的知识天地

前端菜鸟是这样入门学习的,点进来!

现在从事IT方向的人有很多。由于Web前端薪资水平高,职业前景广阔,岗位缺口大,就业口径宽,想通过学习Web前端开发从而进入到该行业工作的人越来越多。当然也有很...

25710
来自专栏极客编程

ECMAScript 6教程 (一)

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文连接,博客地址为 http://www.cnblogs.co...

10920
来自专栏极客编程

Angular 5 快速入门与提高

尽管被称为Angular5,实际上它只是这个诞生于2012年的前端框架的的第四个版本:

23320
来自专栏我和PYTHON有个约会

AngularJS爬坑之路——路由关于路由的那点事儿

关于路由,首先想到的是生活中的路由器。 类似路由器,AngularJS中的路由其实也是一样的概念

10720

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励