AngularJS入门教程之过滤器详解
AngularJS中的过滤器是用于格式化数据的重要工具,通过过滤器,开发者可以在不改变原始数据的前提下,对数据进行转换和展示,本文将详细介绍AngularJS中的过滤器,包括内置过滤器和自定义过滤器的使用方法。
一、什么是过滤器?
过滤器是AngularJS中的一种功能,它允许开发者在视图层对数据进行格式化、排序和过滤等操作,过滤器使用管道符号(|)添加到表达式或指令中,以实现数据的处理和展示。
{{expression | filterName}}
二、过滤器的使用方式
1. 在表达式中使用
过滤器可以直接在表达式中使用,
{{ text | uppercase }} <!-将字符串text大写输出 --> {{ money | currency:"¥" }} <!-将数字money以人民币形式输出 -->
2. 在属性中使用
过滤器也可以在HTML属性中使用,
<div ng-repeat="number in numbers|limitTo:2"> {{ number }} </div>
3. 注入过滤器服务
可以通过注入$filter
服务来使用过滤器,
app.controller("myController", function ($scope,$filter) { $scope.numbers = ["1","2","3","4"]; console.log($filter('limitTo')($scope.numbers,2,1)); //["2","3"] });
三、内置过滤器详解
AngularJS提供了多种内置过滤器,以下是一些常用的内置过滤器及其用法:
1.uppercase
和lowercase
这两个过滤器分别将字符串转换为大写和小写。
<body ng-app="myApp" ng-controller="myController"> <p>{{ string | uppercase }}</p> <p>{{ string | lowercase }}</p> <script> var app = angular.module("myApp",[]); app.controller("myController", function ($scope) { $scope.string = "Test"; }); </script> </body>
2.currency
该过滤器用于将数字格式化为货币形式,默认是美元符号,可以指定其他符号。
<body ng-app="myApp" ng-controller="myController"> <p>{{ number | currency }}</p> <p>{{ number | currency:"¥" }}</p> <script> var app = angular.module("myApp",[]); app.controller("myController", function ($scope) { $scope.number = "123456.789"; }); </script> </body>
3.date
该过滤器用于格式化日期,可以传递一个字符串参数指定日期格式。
<body ng-app="myApp" ng-controller="myController"> <p>{{ date }}</p> <p>{{ date | date:'medium'}}</p> <p>{{ date | date:'short'}}</p> <p>{{ date | date:'fullDate'}}</p> <p>{{ date | date:'longDate'}}</p> <p>{{ date | date:'mediumDate'}}</p> <p>{{ date | date:'shortDate'}}</p> <p>{{ date | date:'shortTime'}}</p> <script> var app = angular.module("myApp",[]); app.controller("myController", function ($scope) { $scope.date = new Date(); }); </script> </body>
4.filter
该过滤器用于从数组中筛选出满足条件的元素,返回一个新的数组。
<body ng-app="myApp" ng-controller="myController"> <ul> <li ng-repeat="x in names | filter : 'i'">{{ x }}</li> </ul> <script> angular.module("myApp", []) .controller("myController", function(scope) { scope.names = ["Dhoni", "Virat", "Sachin", "Rohit", "Suresh", "Sehwag", "Zadeja", "Ashwin"]; }); </script> </body>
5.json
该过滤器用于将JSON对象转换为字符串,便于调试输出。
<body ng-app="myApp" ng-controller="myController"> <pre>{{ JSObject | json }}</pre> <script> var app = angular.module("myApp",[]); app.controller("myController", function ($scope, $filter) { $scope.JSObject = { name:["张三","李四","王五"], age:[15,16,17] }; console.log($scope.JSObject); console.log($filter('json')($scope.JSObject)); }); </script> </body>
6.limitTo
该过滤器用于截取数组或字符串的一部分。
<body ng-app="myApp" ng-controller="myController"> <p>{{ array | limitTo : 2 }}</p> <p>{{ "Angularjs" | limitTo : 2 }}</p> <script> var app = angular.module("myApp",[]); app.controller("myController", function ($scope) { $scope.array = [1,2,3,4]; }); </script> </body>
7.number
该过滤器用于将数字格式化为字符串,并可以保留指定的小数位数。
<body ng-app="myApp" ng-controller="myController"> <p>{{ number | number }}</p> <p>{{ number | number:2 }}</p> <script> var app = angular.module("myApp",[]); app.controller("myController", function ($scope) { $scope.number = 22.6777; }); </script> </body>
8.orderBy
该过滤器用于对数组进行排序,可以指定排序的字段和顺序。
<body ng-app="myApp" ng-controller="myController"> <ul> <li ng-repeat="person in persons | orderBy:'name'"> {{ person.name }} {{ person.age }} </li> </ul> <script> angular.module("myApp", []) .controller("myController", function(scope) { scope.persons = [{name:'John', age:25}, {name:'Zara', age:30}]; }); </script> </body>
四、自定义过滤器详解
除了内置过滤器,AngularJS还允许开发者创建自定义过滤器,自定义过滤器的创建方法如下:
app.filter('odditems',function(){ return function(inputArray){ var array = []; for(var i=0;i<inputArray.length;i++){ if(i%2!==0){ array.push(inputArray[i]); } } return array; } });
使用自定义过滤器的方法与内置过滤器相同:
<body ng-app="myApp" ng-controller="myController"> <ul> <li ng-repeat="item in items | odditems">{{ item }}</li> </ul> <script> angular.module("myApp", []) .controller("myController", function(scope) { scope.items = [1,2,3,4,5,6]; }) .filter('odditems', function() { return function(inputArray) { var array = []; for(var i=0;i<inputArray.length;i++){ if(i%2!==0){ array.push(inputArray[i]); } } return array; } }); </script> </body>
五、相关问答FAQs
1、如何在AngularJS中创建一个自定义过滤器?:可以通过定义一个函数,并在函数内部返回另一个函数来实现自定义过滤器。app.filter('odditems', function() { return function(inputArray) { ... } })
,然后在需要的地方使用| odditems
来调用这个过滤器。
2、如何使用AngularJS的内置过滤器currency
来显示人民币符号?:可以在表达式中使用currency:"¥"
来指定人民币符号。{{ amount | currency:"¥" }}
,这样,数字就会被格式化为人民币的形式并显示出来。
六、小编有话说
通过本文的学习,相信大家对AngularJS中的过滤器有了更深入的了解,过滤器不仅可以简化数据处理逻辑,还能使代码更加简洁易读,在实际开发中,合理使用过滤器可以大大提升开发效率和代码质量,希望本文能为大家提供有价值的参考和帮助。
小伙伴们,上文介绍了“AngularJS入门教程之过滤器详解”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/786978.html