If i understand right, you want get something like
<div ng-repeat="key in map"> {{100000000 | bytes }}</div>
<div ng-repeat="key in map"> {{1.25 | ratio }}</div>
But angular raise error when try parse expression, instead get filter name from variable. So you can add a filter, that would be apply to source filter by name, something like
.filter('applyFilter',function($filter){
return function(source, filterName){
return $filter(filterName)(source);
}
})
angular.module('app', [])
.controller('ctrl', function($scope) {
$scope.map = {
key1: {
filter: 'bytes',
value: 100000000
},
key2: {
filter: 'ratio',
value: 1.25
}
};
}).filter('bytes',function(){
return function(a){
return a + ' bytes';
}
}).filter('ratio',function(){
return function(a){
return 'ratio: ' + a;
}
}).filter('applyFilter',function($filter){
return function(source, filterName){
return $filter(filterName)(source);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.js"></script>
<div ng-app="app" ng-controller="ctrl">
<div ng-repeat="key in map"> {{key.value | applyFilter: key.filter }}</div>
</div>
key.value, or if that is null/undefinedkey.filter. You will want to tell angular to use a filter. I believe the proper way to do so is{{key.value | filter:key.filter}}{{val.value | ratio }}and{{val.value | bytes}}but select filter dynamically?