如何在AngularJS的控制器中使用过滤器

如何在AngularJS的控制器中使用过滤器

在这篇文章中,我们将看到如何使用AngularJS在控制器中使用过滤器。过滤器用于格式化表达式的值,并将其显示给用户。它可以在HTML预览、控制器或服务以及指令中使用。AngularJS提供了许多内置的过滤器,尽管我们可以轻松地创建和定义自定义过滤器。AngularJS的内置过滤器列表如下。

Built-in filters:

  • AngularJS的过滤器。 这个Filter是用来过滤数组和对象元素,并返回过滤后的项目。
  • AngularJS货币过滤器。 这个过滤器用于将一个数字转换成货币格式。
  • AngularJS数字过滤器。 这个过滤器用于将数字转换为字符串或文本。
  • AngularJS日期过滤器。 这个过滤器用于将一个日期转换成指定的格式。
  • AngularJS json过滤器。 这个过滤器用于将一个JavaScript对象转换为JSON。
  • AngularJS小写字母过滤器:该过滤器用于将一个字符串转换为小写字母。
  • AngularJS大写字母过滤器。 这个过滤器用于将一个字符串改为大写的字符串或字母。
  • AngularJS limitTo过滤器:该过滤器用于返回一个包含指定数量元素的数组或字符串。
  • AngularJS orderBy过滤器。这个过滤器用于将给定的数组排序到特定的顺序。

如果通过使用依赖性currencyFilter.注入一个过滤货币,那么就会出现一个函数。注入的参数是一个函数,它把要格式化的值作为第一个参数,从第二个参数开始过滤参数。以下方式用于实现过滤器。

方法1:在视图模板中使用过滤器

语法:

  • 通过对视图模板中的表达式应用过滤器。
{{ expression | filter }} 
  • 过滤器可以应用于另一个过滤器的结果。这被称为 “链式”。
{{ expression | filter1 | filter2 | ... }}
  • 过滤器可以有参数。
{{ expression | filter:argument1:argument2:... }}

例子1:这个例子描述了在AngularJS的控制器内使用过滤器。

<!DOCTYPE html>
<html>
  
<head>
    <script src=
"https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js">
    </script>
</head>
  
<body style="text-align: center">
    <h1 style="color:green">GeeksforGeeks</h1>
    <h3>
        Implementing the Filter inside the Controllerin AngularJS
    </h3>
    <div ng-app="app1" ng-controller="currencyCtrl">
        <h3>Price: {{ price | currency }}</h3> </div>
    <script>
        var app = angular.module('app1', []);
        app.controller('currencyCtrl', function(scope) {
            scope.price = 100;
        });
    </script>
    <p> 
        The currency filter formats a number to a currency format. 
    </p>
</body>
</html>

输出:

如何在AngularJS的控制器中使用过滤器?

方法2:过滤器被用于指令、服务和控制器中。为了实现这一点,在你的指令/控制器/服务中注入一个带有过滤器名称的依赖关系

例子2:这是另一个例子,描述了AngularJS中控制器内部过滤器的使用。

<!DOCTYPE html>
<html>
  
<head>
    <script src=
"https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js">
    </script>
</head>
  
<body style="text-align: center">
    <h1 style="color:green">GeeksforGeeks</h1>
    <h3>
        Implementing the Filter inside the Controllerin AngularJS
    </h3>
    <script>
        var listedItems = [{
            itemID: 001,
            itemName: "Laptop",
            stockLeft: 1
        }, {
            itemID: 002,
            itemName: "Cell Phone",
            stockLeft: 3
        }, {
            itemID: 003,
            itemName: "Earphones",
            stockLeft: 0
        }, {
            itemID: 004,
            itemName: "Chargers",
            stockLeft: 5
        }, {
            itemID: 005,
            itemName: "Headphones",
            stockLeft: 0
        }, {
            itemID: 006,
            itemName: "USB Cables",
            stockLeft: 15
        }];
        listedItems = listedItems.filter(function(item) {
            return(item.stockLeft > 0);
        });
        // This will display the no of items are in stock
        prompt("", "There are " 
                       + listedItems.length 
                       + " items left in shop.");
    </script>
</body>
</html>

输出:

如何在AngularJS的控制器中使用过滤器?

方法3:它是对第二种方法的修改。过滤器也可以被添加到AngularJS中来格式化数据值。在我们的AngularJS控制器中,有$filter服务。在AngularJS中,你也可以在控制器中注入$filter服务,并可以用下面的语法来使用它的过滤器。

语法:

$filter("filter")(array, expression, compare, propertyKey)
function myCtrl($scope, $filter) {
    $scope.finalResult = $filter("filter")(
        $scope.objArray, $scope.searchObj);
};

AngularJS有一些内置的过滤器,可以用来根据一些条件减少一个数组的执行或数组的某些点。

$scope.formatDate = $filter("date")($scope.date, "yyyy-MM-dd");
$scope.finalResult = $filter('uppercase')($scope.name);

例子3:在这个例子中,过滤器被添加到指令中,如ng-repeat,通过使用pipe符号或字符|,后面跟一个过滤器标签。

<!DOCTYPE html>
<html>
  
<head>
    <script src=
"https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js">
    </script>
</head>
  
<body>
    <h1 style="color:green">GeeksforGeeks</h1>
    <h3>
        Implementing the Filter inside the Controller in AngularJS
    </h3>
    <div ng-app="app1" ng-controller="piprCtrl">
        <p>
            Looping with obj object created for nameList array: 
        </p>
        <ul>
            <li ng-repeat="obj in nameList | orderBy:'city'">
                {{ obj.name + ', ' + obj.city }} 
            </li>
        </ul>
    </div>
    <script>
        angular.module("app1", []).controller("piprCtrl", 
        function(scope) {
            scope.nameList = [{
                name: "Hardik",
                city: "Chandigarh"
            }, {
                name: "Shekhar",
                city: "Dehradun"
            }, {
                name: "Sanyam",
                city: "Chandigarh"
            }, {
                name: "Poojan",
                city: "Dehradun"
            }, {
                name: "Aman",
                city: "Muzaffarnagar"
            }, {
                name: "Shashank",
                city: "Roorkee"
            }, {
                name: "Shazi",
                city: "Lucknow"
            }, {
                name: "Harshit",
                city: "Dehradun"
            }, {
                name: "Abhishek",
                city: "Gangoh"
            }];
        });
    </script>
</body>
</html>

输出:

如何在AngularJS的控制器中使用过滤器?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程