# Custom filters
# Simple filter example
Filters format the value of an expression for display to the user. They can be used in view templates, controllers or services. This example creates a filter (addZ) then uses it in a view.  All this filter does is add a capital 'Z' to the end of the string.
# example.js
angular.module('main', [])
    .filter('addZ', function() {
            return function(value) {
                return value + "Z";
            }
     })
    .controller('MyController', ['$scope', function($scope) {
        $scope.sample = "hello";
    }])
# example.html
Inside the view, the filter is applied with the following syntax: { variable | filter}.  In this case, the variable we defined in the controller, sample, is being filtered by the filter we created, addZ.
<div ng-controller="MyController">
   <span>{ {sample | addZ} }</span>
</div>
# Expected output
helloZ
# Use a filter in a controller, a service or a filter
You will have to inject $filter:
angular
  .module('filters', [])
  .filter('percentage', function($filter) {
    return function (input) {
      return $filter('number')(input * 100) + ' %';
    };
  });
# Create a filter with parameters
By default, a filter has a single parameter: the variable it is applied on. But you can pass more parameter to the function:
angular
  .module('app', [])
  .controller('MyController', function($scope) {
    $scope.example = 0.098152;
  })
  .filter('percentage', function($filter) {
    return function (input, decimals) {
      return $filter('number')(input * 100, decimals) + ' %';
    };
  });
Now, you can give a precision to the percentage filter:
<span ng-controller="MyController">{ { example | percentage: 2 } }</span>
=> "9.81 %"
... but other parameters are optional, you can still use the default filter:
<span ng-controller="MyController">{ { example | percentage } }</span>
=> "9.8152 %"