Writing Custom Filters With AngularJS

Angular provides us with several filters which are useful formatting values inside our templates in a declarative way. The built-in filters are fairly useful, but the real power from filters comes from being able to write custom filters.

For example, we might want to write a pluralize filter, that works similar to the pluralize function in Rails.

Writing a custom filter is very simple - we simply call the filter function and return another custom function. This function takes at least one parameter and returns a single value. All filters can take additional parameters which can further enhance their behavior.

In this case I am going to accept two parameters - the count and the text to be pluralized. The first parameter will be the value the filter is applied to and additional parameters will be specified as colon-separated values.

For example, in this template the first parameter will be 5 and the second parameter will be the string ‘apple’.

<span>{{ 5 | pluralize : 'apple' }}</span>

Here is what the actual filter looks like:

app.filter "pluralize", ->
  (count, text) ->
    switch count
      when 1
        "#{count} #{text}"
      else
        "#{count} #{text}s"

You can find the entire example on Plunker. Happy coding.