Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJs ng-repeat orderBy toggle

How do I change the orderBy filter in ng-repeat? The default order value is by date (most recent first), but by clicking on toggle_to_sort(), I need to change the sort order to by name (alphabet order), then if a user clicks again - return to order by date.

angular.module('app', []).controller('ctrl', function($scope) {
  $scope.array = [
    {name: 'item1', date: 1453284120},
    {name: 'item2', date: 1453284440},
    {name: 'item3', date: 1453284550},
    {name: 'item4', date: 1453284086},
    {name: 'item5', date: 1453284330},
  ];
    
  $scope.toggle_to_sort = function() {
    // ??
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>

<div ng-app="app" ng-controller="ctrl">

  <div ng-repeat="item in array  | orderBy:'-date'">
    <div>{{item.name}}</div>
  </div>

  <div ng-click="toggle_to_sort()">Toggle<div>

</div>
like image 647
johanson Avatar asked Jul 15 '26 14:07

johanson


1 Answers

angular.module("myApp",[]).controller("myController",function($scope){
  

  
$scope.array = [
{name: 'item1', date: 1453284120},
{name: 'item2', date: 1453284440},
{name: 'item3', date: 1453284550},
{name: 'item4', date: 1453284086},
{name: 'item5', date: 1453284330},
]
});
<html ng-app="myApp">
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    </head>
<body ng-controller="myController">
  <div ng-click="mytoggle=!mytoggle">Name<div><hr>
<div ng-repeat="item in array | orderBy: !mytoggle?'-date':'name' ">
  
	<div>{{item.name}}</div>
</div>
</body>

  </html>

Hope It Will Help...

like image 110
sagar chopada Avatar answered Jul 19 '26 04:07

sagar chopada