Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sort array in angularjs

Im working on sorting on an array using Angular JS using orderBy. But still its not getting sorted on a particular key.

Here is the code

var app = angular.module('sortModule', [])
app.controller('MainController', function($scope,$filter){    
$scope.languages = [ 
        { name: 'English', image: '/images/english.png',key:2 },
        { name: 'Hindi', image: '/images/hindi.png',key:3 },
    { name: 'English', image: '/images/english.png',key:2},
    { name: 'Telugu', image: '/images/telugu.png',key:1 }];        

var newLanguages = []
newLanguages = angular.copy($scope.languages);  
function sortImages() { 
        $scope.languages = []
    $scope.keys = []        
        for(language in newLanguages) {
            $scope.keys.push(newLanguages[language])
    }
    $filter('orderBy')($scope.keys, 'key')
    console.log(JSON.stringify($scope.keys))
}
sortImages();

});

Fiddle

Im planning to see sorting based on "key". telugu should come first, english next and hindi last.

like image 357
Syed Avatar asked Dec 05 '22 19:12

Syed


1 Answers

you need to have:

$scope.keys = $filter('orderBy')($scope.keys, 'key', false) 

the order by filter returns a new array, it does not make changes to the passed array.

updated fiddle: http://jsfiddle.net/kjuemhua/17/

like image 132
gaurav5430 Avatar answered Dec 23 '22 20:12

gaurav5430