Is it possible to use limitTo
filter on a ngRepeat
directive which is repeating the properties of an Object and not items in an Array.
I am aware that the official documentation says that the input to limitTo
needs to be an array or a string. But wondering if there's a way to get this to work.
Here's a sample code:
<li ng-repeat="(key, item) in phones_dict |orderBy:'-age'| limitTo:limit_items"></li>
And $scope.phones_dict
is an Object like
{
item_1: {name:"John", age: 24},
item_2: {name:"Jack", age: 23}
}
limitTo works only for strings and arrays, for object use own filter for example:
myApp.filter('myLimitTo', [function(){
return function(obj, limit){
var keys = Object.keys(obj);
if(keys.length < 1){
return [];
}
var ret = new Object,
count = 0;
angular.forEach(keys, function(key, arrayIndex){
if(count >= limit){
return false;
}
ret[key] = obj[key];
count++;
});
return ret;
};
}]);
Example on fiddle: http://jsfiddle.net/wk0k34na/2/
Adding
ng-if ="$index < limit"
to the ng-repeat tag did the trick for me, though it's probably not strictly the "right" way to do this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With