AngularJS 排序

AngularJS 排序

2017/11/23 10:09:38


方式一(使用字段和标记)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>

        <style type="text/css">


            table {
                text-align: center;
            }

            th {
                width: 200px;
            }

        </style>


        <script type="text/javascript" src="js/angular.min.js"></script>


        <script type="text/javascript">

            var app = angular.module("msApp", [])
            //控制器
            app.controller("msCtrl", function ($scope, $filter) {


                    //数组数据
                    $scope.datas = [


                        {id: 0, name: 'zhangsan', age: 21, date: 1512517730000},
                        {id: 1, name: 'lisi', age: 17, date: 1513567730000},
                        {id: 2, name: 'wangwu', age: 10, date: 1541567730000},
                        {id: 3, name: 'zhaoliu', age: 20, date: 1551567730000},
                        {id: 4, name: 'maqi', age: 23, date: 1516567730000},
                        {id: 5, name: 'wangxiaoming', age: 9, date: 1517567730000},
                        {id: 6, name: 'lixiaolong', age: 5, date: 1518567730000},
                        {id: 7, name: 'zhaoxiaoguang', age: 28, date: 1519567730000},
                        {id: 8, name: 'libaosi', age: 12, date: 1599567730000}

                    ]

                    //select 数组
                    $scope.selects = ["选择排序", "id正序排序", "id倒序排序", "年龄正序排序", "年龄倒序排序", "日期正序排序", "日期倒序排序"]


                    //下拉选择排序判断
                    $scope.selchange = function () {

                        if ($scope.sel == $scope.selects[1]) {

                            //按照title排序
                            $scope.title = 'id'
                            //升序
                            $scope.desc = false;


                        } else if ($scope.sel == $scope.selects[2]) {

                            //按照title排序
                            $scope.title = 'id'
                            //降序
                            $scope.desc = true;


                        } else if ($scope.sel == $scope.selects[3]) {

                            $scope.title = 'age'
                            $scope.desc = false;


                        } else if ($scope.sel == $scope.selects[4]) {
                            $scope.title = 'age'
                            $scope.desc = true;

                        } else if ($scope.sel == $scope.selects[5]) {

                            $scope.title = 'date'
                            $scope.desc = true;

                        } else if ($scope.sel == $scope.selects[6]) {

                            $scope.title = 'date'
                            $scope.desc = false;
                        }

                    }

                }
            )


        </script>

    </head>
    <body ng-app="msApp" ng-controller="msCtrl">


    <table border="1">

        <tr>
            <!-- 选择 id排序          升序降序 来回轮询 -->
            <th ng-click="title='id'; desc=!desc">
                id
            </th>
            <th ng-click="title='name';desc=!desc">
                name
            </th>
            <th ng-click="title='age';desc=!desc">
                age
            </th>
            <th ng-click="title='date' ; desc=!desc">
                date
            </th>

        </tr>
        <!--                              排序       升序降序标记   -->
        <tr ng-repeat=" item in datas|orderBy:title:desc">

            <td>{{item.id}}</td>
            <td>{{item.name}}</td>
            <td>{{item.age}}</td>
            <td>{{item.date |date :'yyyy-MM-dd HH:mm:ss:sss'}}</td>
        </tr>
    </table>


    <button ng-click="title='id';desc=!desc">id排序</button>
    <button ng-click="title='age';desc=!desc">年龄排序</button>
    <button ng-click="title='date';desc=!desc">日期排序</button>

    <br>

    <select ng-model="sel" ng-init="sel =selects[0] " ng-options="item for item in selects" ng-change="selchange()">


    </select>

    </body>
    </html>

方式二(使用+ -)

代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>


        <style type="text/css">

            table {

                text-align: center;

            }

            td {

                width: 100px;

            }

        </style>


        <script type="text/javascript" src="js/angular.min.js"></script>


        <script type="text/javascript">

            var app = angular.module("msApp", []);


            app.controller("msCtrl", function ($scope) {


                $scope.selects = ["选择排序", "id正序", "id降序", "年龄正序", "年龄倒序"]

                $scope.datas = [

                    {id: 0, name: "张三", age: 45},

                    {id: 1, name: "李四", age: 43},

                    {id: 2, name: "王五", age: 40},

                    {id: 3, name: "赵六", age: 33},

                    {id: 4, name: "周七", age: 32}
                ]



                /****************核心代码*************/
                $scope.selchange = function () {


                    if ($scope.sel == $scope.selects[1]) {
                        // ord 设置为+id 正序排序
                        $scope.ord = "+id"
                    } else if ($scope.sel == $scope.selects[2]) {
                        // ord 设置为-id 倒序排序
                        $scope.ord = "-id"
                    } else if ($scope.sel == $scope.selects[3]) {
                        $scope.ord = "age"
                    } else if ($scope.sel == $scope.selects[4]) {
                        $scope.ord = "-age"
                    }

                }


            })


        </script>

    </head>
    <body ng-app="msApp" ng-controller="msCtrl">

    <select ng-model="sel" ng-init="sel=selects[0]" ng-options="item for item in selects" ng-change="selchange()"></select>

    <table border="1px">

        <tr>
            <th>id</th>
            <th>name</th>
            <th>age</th>


        </tr>
        <!--                         使用+-标记字段排序  -->
        <tr ng-repeat="item in datas|orderBy :ord">
            <td>{{item.id}}</td>
            <td>{{item.name}}</td>
            <td>{{item.age}}</td>

        </tr>
    </table>

    </body>
    </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值