简体   繁体   English

如何在单击按钮时按角度1排序列表?

[英]how to sort list in angular 1 on button click?

could you please tell me how to sort list in angular 1 on button click ? 您能告诉我如何在单击按钮时按角度1对列表进行排序吗? On button click I want to toggle (ascending and descending )sort list. 在按钮上单击我要切换(升序和降序)排序列表。 https://plnkr.co/edit/HYuk7DAgOY6baWhrvXko?p=preview https://plnkr.co/edit/HYuk7DAgOY6baWhrvXko?p=preview

var app = angular.module('plunker', []);

    app.controller('MainCtrl', function($scope) {
      vm =this;
      $scope.name = 'World';
       $scope.sortDir = "ASC"
     $scope.customerData= [
      {
        "name":"naveen",
        "Location":"Delhi",
        "email":"naveen.nsit89@gmail.com"
      },
      {
        "name":"sss",
        "Location":"Delhi",
        "email":"naveen.nsit89@gmail.com"
      },
      {
        "name":"aa",
        "Location":"Delhi",
        "email":"naveen.nsit89@gmail.com"
      },
      {
        "name":"zzz",
        "Location":"Delhi",
        "email":"naveen.nsit89@gmail.com"
      }
    ]

    $scope.sortButtonClick =function(){
         $scope.sortDir = "DESC"

    }
    });

You can do this using a filter orderBy , 您可以使用过滤器orderBy进行此操作,

  $scope.sortButtonClick = function() {
    if($scope.sortDir === "ASC"){
    $scope.sortDir = "DESC"
    $scope.customerData = $filter('orderBy')($scope.customerData, '-name');
    }else{
    $scope.sortDir = "ASC"
    $scope.customerData = $filter('orderBy')($scope.customerData, 'name');

    }
  }

DEMO 演示

 var app = angular.module('plunker', []); app.controller('MainCtrl', function($scope, $filter) { vm = this; $scope.name = 'World'; $scope.sortDir = "ASC" $scope.customerData = [{ "name": "naveen", "Location": "Delhi", "email": "naveen.nsit89@gmail.com" }, { "name": "sss", "Location": "Delhi", "email": "naveen.nsit89@gmail.com" }, { "name": "aa", "Location": "Delhi", "email": "naveen.nsit89@gmail.com" }, { "name": "zzz", "Location": "Delhi", "email": "naveen.nsit89@gmail.com" }] $scope.sortButtonClick = function() { if($scope.sortDir === "ASC"){ $scope.sortDir = "DESC" $scope.customerData = $filter('orderBy')($scope.customerData, '-name'); }else{ $scope.sortDir = "ASC" $scope.customerData = $filter('orderBy')($scope.customerData, 'name'); } } }); 
 <!DOCTYPE html> <html ng-app="plunker"> <head> <meta charset="utf-8" /> <title>AngularJS Plunker</title> <script>document.write('<base href="' + document.location + '" />');</script> <link rel="stylesheet" href="style.css" /> <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.12/angular.js" data-semver="1.4.9"></script> <script src="app.js"></script> </head> <body ng-controller="MainCtrl"> <button ng-click="sortButtonClick()">{{sortDir}}</button> <ul style="margin: 40px;"> <li ng-repeat="item in customerData "> <span>{{item.name}}</span> <button ng-click="deleteItem(item)">X</button> </li> </ul> </body> </html> 

HTML 的HTML

  <li ng-repeat="item in customerData | orderBy:propertyName:reverse">
            <span>{{item.name}}</span>
            <button ng-click="deleteItem(item)">X</button>
        </li>

Controller 控制者

$scope.propertyName = 'name';

$scope.reverse = true;

$scope.sortButtonClick =function(){
    $scope.reverse =  !$scope.reverse 
}

Demo 演示版

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM