I am trying to sort some elements in an ng-repeat directive.
I have created a custom filter that appears to work although I get the error:
"Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!"
From what i've read on other answers this is often due to returning a different value for each filter. I have checked and I am returning the same array object...so I'm not sure what could be causing it.
.filter('sortOffers', function() {
return function(vals, predicate, reverse) {
var vals_old = vals;
vals.sort(function(a, b) {
var sorter = reverse ? 1 : -1;
if(predicate === 'seeking') {
if(a.data.valueSought > b.data.valueSought) {
return sorter;
} else if(a.data.valueSought < b.data.valueSought) {
return -sorter;
} else {
return 0;
}
}
if(predicate === 'offering') {
if(a.data.valueOffered > b.data.valueOffered) {
return sorter;
} else if(a.data.valueOffered < b.data.valueOffered) {
return -sorter;
} else {
return 0;
}
}
});
return vals;
}
});
html:
<tr ng-repeat="offer in offers | sortOffers:sortOffersPredicate:sortOffersReverse" ng-hide="hideDueDateSellers && offer.data.offerType === 'seeking_flexibility' || hideFlexibilitySellers && offer.data.offerType === 'seeking_duedate'">
<td>{{ offer.data.valueOffered || '0' }} {{ offer.offeringString }}</td>
<td>{{ offer.data.valueSought || '0' }} {{ offer.seekingString }}</td>
<td ng-if="offer.data._owner !== currentUser._id"><button class="ui button positive" ng-click="acceptOffer(offer)">Accept Offer</button></td>
<td ng-if="offer.data._owner === currentUser._id"><button class="ui button negative" ng-click="cancelOffer(offer)">Cancel Your Offer</button></td>
</tr>