单击按钮,在angularjs中对json对象列表进行排序

时间:2016-06-19 07:54:16

标签: javascript angularjs json

我正在尝试对其中一个属性为“date”字段的json对象的嵌套列表进行排序。日期字段采用MM/dd/yyyy格式。

这是HTML代码:

<body ng-app="Test" ng-controller="TestController as testCtrl" ng-init="testCtrl.displayList()">
<ul ng-repeat="de in testCtrl.listToBeDisplayed">

<li >{{ de.empId }} {{ de.empName }} {{ de.joinDate }}</li>

</ul>

<button type="button" ng-click="testCtrl.sortList()">Test Button</button>

//这是脚本:

<script>
angular.module("Test",[]);

angular.module("Test").controller("TestController",TestController);

TestController.$inject = ['orderByFilter','$filter'];

function TestController(orderBy,$filter){


    vm = this;


    vm.demoList = [
        {
            "Employees" :
            [{
                "id" : "1001",
                "name": "Andre",
                "date": "05/20/2016"
            },
            {
                "id" : "1002",
                "name": "Chris",
                "date": "04/11/2016"
            },
            {
                "id" : "1003",
                "name": "Darren",
                "date": "03/11/2016"
            },
            {
                "id" : "1004",
                "name": "Marlen",
                "date": "08/11/2016"
            }]
        }           
                   ];
propertyName = 'date';


    vm.displayList = function(){
        console.log("in display List fn");
        empList=[];
        for(var i=0;i<vm.demoList[0].Employees.length;i++)
            {
                value = vm.demoList[0].Employees[i];

                console.log("value="+value);

                var employee = {
                    empId: '',
                    empName: '',
                    joinDate: ''
                };

                employee.empId = value.id;
                employee.empName = value.name;
    employee.joinDate = $filter('date')(new Date(value.date), "MM/dd/yyyy");

                empList[i] = employee;


            }
        vm.listToBeDisplayed = empList;

    }
</script>

    </body>

单击按钮时,列表未正确排序。

我已经为orderBy过滤器推荐了Angular文档:https://docs.angularjs.org/api/ng/filter/orderBy

这是我为上述情况创建的plunker: https://plnkr.co/edit/Q1m24arssRxC6B3NNO0n?p=preview

对此有何帮助?

1 个答案:

答案 0 :(得分:0)

在你的html中调用正确的函数:

<button type="button" ng-click="testCtrl.sortList()">Test Button</button>

订购正确的物业名称:

vm.sortList = function () {
    vm.listToBeDisplayed = orderBy(empList, 'joinDate', true);
}