JSFiddle - React, Tailwind, and code Playground
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
<div ng-app="testApp" ng-controller="testC">
<ul>
<li class="row" ng-repeat="f in filterTypes"><a href="#" ng-click="toggleTag(f);">{{f}}</a> </li>
</ul>
<ul>
<li ng-repeat="item in (items|ngRepeatFinish) | selectedFilters:filters" >
<span>name: {{item.name}}</span>
<span>country: {{item.country}}</span>
</li>
</ul>
</div>
CSS
.row {
display: inline-block;
padding: 0 15px;
}
JavaScript
angular.module('testApp', [])
.filter('ngRepeatFinish', function($timeout){
return function(data){
var me = this;
var flagProperty = '__finishedRendering__';
if(!data[flagProperty]){
Object.defineProperty(
data,
flagProperty,
{enumerable:false, configurable:true, writable: false, value:{}});
$timeout(function(){
delete data[flagProperty];
me.$emit('ngRepeatFinished');
},0,false);
}
return data;
};
})
.filter('selectedFilters', function(){
return function(items, filters) {
return items.filter(function(item) {
for (var i in item.country) {
if (filters.indexOf(item.country) != -1) {
return true;
}
}
return false;
});
};
})
.controller('testC', function($scope){
$scope.$on('ngRepeatFinished', function(){
alert('Finished Rendering!');
});
$scope.filterTypes = ['UK', 'USA', 'Switzerland'];
$scope.filters = ['UK'];
$scope.items = [{name: 'David', country: 'UK', featured: true},
{name: 'Brad', country: 'USA', featured: false},
{name: 'Schmidt', country: 'Switzerland', featured: true}];
$scope.toggleTag = function(tag){
var tags = $scope.filters;
if(!_.contains(tags, tag)){
tags.push(tag);
}else{
removeType(tags, tag);
}
}
function removeType(arr, type) {
for (var i=arr.length - 1; i >=0; i--) {
if ( arr[i] === type ) {
arr.splice(i,1);
}
}
return arr;
...