angularJS 过滤器练习

前端之家收集整理的这篇文章主要介绍了angularJS 过滤器练习前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本例展示产品列表,使用angular过滤器 orderBy对产品进行排序,具体是点击列标题时交替进行正序倒序排列;同时使用angular过滤器 filter 可根据输入的产品名称搜索出对应产品,实现模糊查询

页面运行如下:


输入"pad" 则自动显示相关产品,点击“产品价格”按价格低到高排序:


html:

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="../../vendor/bootstrap3/css/bootstrap.css">
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
    <script src="app/index2.js"></script>
    <style>
        .redColor{  color:red;  }
    </style>
</head>
<body>

<div class="container" ng-app="product" ng-controller="productController">
    <nav class="navbar navbar-default" role="navigation">
        <div class="container-fluid">
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <form class="navbar-form navbar-left" role="search">
                    <div class="form-group">
                        <input type="text" ng-model="search" class="form-control" placeholder="产品名称">
                    </div>
                </form>
            </div><!-- /.navbar-collapse -->
        </div><!-- /.container-fluid -->
    </nav>
    <table class="table">
        <thead>
        <tr>
            <th ng-click="sortProduct('id')"  ng-class="{ dropup : orderSign=='' }">
                产品编号
                <span ng-class="{ redColor : orderColumn=='id' }" class="caret"></span>
            </th>
            <th ng-click="sortProduct('name')" ng-class="{ dropup : orderSign=='' }">
                产品名称
                <span ng-class="{ redColor : orderColumn=='name' }" class="caret"></span>
            </th>
            <th ng-click="sortProduct('price')" ng-class="{ dropup : orderSign=='' }">
                产品价格
                <span ng-class="{ redColor : orderColumn=='price' }" class="caret"></span>
            </th>
        </tr>
        </thead>
        <tbody>
        <tr ng-repeat="item in productList | filter:{'name':search} | orderBy:(orderSign + orderColumn) ">
            <td>
                {{item.id}}
            </td>
            <td>
                {{item.name}}
            </td>
            <td>
                {{item.price | currency:'(RMB)'}}
            </td>
        </tr>
        </tbody>
    </table>

</div>

</body>
</html>

index2.js
angular.module('product',[])
    .factory('productList',function(){
        return [
            { id:910,name:"imac",price:15400 },{ id:80,name:"iphone",price:5400 },{ id:29,name:"ipad",price:1420 },{ id:500,name:"ipad air",price:2340 },{ id:1200,name:"ipad mini",price:2200 }
        ]
    })
    .controller('productController',function($scope,productList){
        $scope.productList=productList;

        $scope.orderColumn='name'; //排序字段
        $scope.orderSign='-';      //为空时正序 为负号时倒序

        $scope.sortProduct=function(sortColumn){  //点击列标题排序事件
            $scope.orderColumn=sortColumn;
            if($scope.orderSign=="-"){
                $scope.orderSign="";
            }else{
                $scope.orderSign='-';
            }
        };

    });

相关指令:

ng-class 示例: ng-class=" { redColor : bool表达式 } " ,redColor 是一个css样式类

如果bool表达式值为真,则添加这个样式 redColor

重点:

<tr ng-repeat=" item in productList | filter : {'name':search} | orderBy : '-price' ">

search是搜索框输入数据的模型,

| filter : {'name':search} 指明:根据搜索框的输入数据过滤产品名称,

| orderBy : '-price' 指明:根据产品价格由高到低排序

原文链接:https://www.f2er.com/angularjs/148731.html

猜你在找的Angularjs相关文章