如何在angularjs onclick上订购商品

时间:2017-09-11 10:32:25

标签: angularjs

我有很多来自数据库的记录。想要根据记录的优先级执行排序,反之亦然。我的首要任务是[" H"," M"," L","没有GO"]。想要根据按钮的优先点击显示记录,反之亦然意味着如果首先我点击需要显示H-M-L-NOGO并且切换点击应该显示NO GO-L-M-H。在优先级列上排序时,它不会完美。 我的script.js是

$scope.filterPriority = function () {
        if(toggled) {
            $scope.peoples.sort(function (a, b) {
                return (priorityArray[a.priority] || Infinity ) - (priorityArray[b.priority] || Infinity);
            });
            $scope.sortBy = 'priority';
            $scope.sortDescending = !$scope.sortDescending;
        } else {
            $scope.peoples.sort(function (a, b) {
                return (priorityArray[b.priority] || Infinity ) - (priorityArray[a.priority] || Infinity);
            });
            $scope.sortBy = 'priority';
            $scope.sortDescending = !$scope.sortDescending;
        }   
        toggled = !toggled;
    };
    /* sorting for remaining columns */
    $scope.sortBy = 'name';
    $scope.sortDescending = false;

    $scope.sort = function(column) {
        if ($scope.sortBy === column) {
            $scope.sortDescending = !$scope.sortDescending;
        } else {
            $scope.sortBy = column;
            $scope.sortDescending = false;
        }
    }

我在plunker网址中的方法是https://plnkr.co/edit/HPGnCIRNSdCFU6nI1eO2?p=preview

1 个答案:

答案 0 :(得分:2)

首先ng-repeat"p in peoples"而不是"peoples in p"。更改您的priorityArray,如下所示。使用下面的代码,完美地运作:

angular.module('app',[]).controller('mainCtrl', function($scope){
$scope.peoples = [
            { 
               'priority': 'H'},
            {  
               'priority': 'M'},
            { 
               'priority': 'L'},
            { 
               'priority': 'NO GO'},
           {
               'priority': 'H'},
           {
               'priority': 'M'
            },
];

var priorityArray = { 'H': 1, 'M': 2, 'L': 3, 'NO GO': 4}; 
 
var toggled = false;

$scope.filterPriority = function () {
  if(toggled){
    $scope.peoples.sort(function (a, b) {
       return (priorityArray[a.priority] || Infinity ) - (priorityArray[b.priority] || Infinity);
    });
   }else{
     $scope.peoples.sort(function (a, b) {
       return (priorityArray[b.priority] || Infinity ) - (priorityArray[a.priority] || Infinity);
    });
   }   
  toggled = !toggled;
  };
        
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app' ng-controller='mainCtrl'>
   <table>
    <tr>
      <th><a ng-click="filterPriority()">priority</a></th>
      <tr ng-repeat="p in peoples"><td>{{p.priority}}</td></tr>
   </table>
    
</div>