Batman.View Filters
Batman filters are evaluated from left to right, with the output of each filter being injected into the next. This allows you to form filter chains for display purposes. Accessor caching does not apply to filter chains. If any component of the chain changes, the entire chain will be recalculated for each binding in the template.
-
raw(value) : string
The
raw
filter renders the unescaped value.<span data-bind="someHTMLyString | raw"></span>
-
get(value, key) : value
Calls the get function on the input value with the specified key. Can be used with
Batman.Accessible
andBatman.TerminalAccessible
:<span data-bind="accessibleFunction | get 'item'"></span>
-
value[key] : value
Shorthand for the
get
filter. -
equals(left, right) : boolean
Checks if left content is equal to right content:
<span data-showif="title | equals 'Batman Views'"></span>
-
not(value) : boolean
Inverts the truthiness of the input value:
<span data-hideif="title | equals 'Batman Views' | not | and action | equals 'show'"></span>
-
matches(value, string) : boolean
Tests a string against the input value:
<span data-showif="title | matches 'Bat'"></span>
-
truncate(value, length, end = '...') : string
Limits the length of output to the specified length and appends the specified text if over the limit:
<span data-bind="page.title | truncate 5, '…'"></span>
Would result in:
<span data-bind="page.title | truncate 5, '…'">About…</span>
-
default(value, defaultValue) : value
Provides a default value if the keypath is falsy:
<input type="text" data-bind="page.title | default 'About Us'"></input>
-
prepend(value, string) : string
Prepends the string to the input value:
<span data-bind-class="page.tag | prepend 'ico-'"></span>
If page.tag is 'about' this would result in:
<span data-bind-class="page.tag | prepend 'ico-'" class="ico-about"></span>
-
append(value, string) : string
Appends the string to the input value:
<span data-bind-class="page.tag | append '-ico'"></span>
If page.tag is 'about' this would result in:
<span data-bind-class="page.tag | append '-ico'" class="about-ico"></span>
-
replace(value, searchString, replaceString[, flags]) : string
Replaces content in the input value matching the
searchString
with thereplaceString
value:<span data-bind="page.title | replace 'html', 'HTML'"></span>
-
downcase(value) : string
Downcases the input value:
<span data-bind="page.title | downcase"></span>
-
upcase(value) : string
Upcases the input value:
<span data-bind="page.title | upcase"></span>
-
pluralize(value, count) : string
Pluralizes the input value based on the patterns specified in
Batman.helpers.inflector
and the count provided:( -> @singular /(analysis)$/i, '$1' @singular /(analy)ses$/i, '$1sis' ).call(Batman.helpers.inflector)
<span data-bind="'analysis' | pluralize page.comments.count"></span>
-
humanize(string) : string
Takes a string and makes it human readable, for example 'an_underscored_string' would become 'An underscored string'.
<span data-bind="'about_us_page' | humanize"></span>
Would result in:
<span data-bind="'about_us_page' | humanize">About us page</span>
-
join(value, separator = '') : string
Joins an
array
of values into a single string:<span data-bind="page.comments | map 'title' | join ', '"></span>
-
sort(value) : value
Sorts an
array
using the default comparison:<span data-foreach-comment="page.comments | sort" data-bind="comment.title"><span>
-
map(iterable) : value
Maps the specified keypath from an
array
of objects:<span data-foreach-author="page.comments | map 'author'" data-bind="author"><span>
-
has(iterable, item) : boolean
Calls the
iterable
'shas
function to check for the existence of the specifieditem
.class Sample.FirstController extends Batman.Controller index: -> @set('things', new Batman.Set('thing1', 'thing2'))
<input type="checkbox" data-bind-checked="things | has 'thing1'"></input>
If you were to dispatch
first#index
:<input type="checkbox" data-bind-checked="things | has 'thing1'" checked="true"></input>
-
first(iterable) : value
Returns the first value from an
array
:<span data-context-firstComment="page.comments | first"></span>
-
meta(value, keypath) : value
-
interpolate(string, valuesObject) : string
Allows you to use string interpolation:
<span data-bind="'The page title is %{title}%' | interpolate {'title': 'page.title'}"></span>
-
withArguments(function, curriedArguments...) : function
Ensures that the function is called with the supplied arguments in addition to the arguments it would normally be called with. This is a form of currying. The argument order will be the curried arguments (those passed to withArguments) first, then the regular arguments. In the case of a click event, the regular arguments are node, event, view.
class Sample.CloseWindowView extends Batman.View html: '<span data-event-click="closeWindow | withArguments true"></span>' closeWindow: (actuallyClose) -> window.close() if actuallyClose
<div data-view="CloseWindowView"></div>
-
escape(value) : string
Escapes HTML in the input value:
<textarea data-bind="page.body_html | escape"></textarea>