Using Handlebars in your apps
All screens of your Fliplet app already include Handlebars 2.15.2
hence you can start using it straight away. Here’s a quick example following the official Handlebars docs:
// Compile a template in JavaScript by using Handlebars.compile
var source = '<h1>{{ title }}</h1><p>{{ body }}</p>';
var template = Handlebars.compile(source);
// Get the HTML result of evaluating a Handlebars template by executing the template with a context.
var context = { title: 'My New Post', body: 'This is my first post!' };
var html = template(context);
Using a template script for long-form templates
For clarity, you can include your source templates in the screen’s HTML so they’re easier to write. This is particularly useful if you are writing long-form templates. If you do so, you must escape all Handlebars commands with a backslash (\
) because the screen HTML is also compiled by Handlebars in Fliplet’s engine:
// Grab the template from the HTML and compile it with Handlebars
var source = $('#source').html();
var template = Handlebars.compile(source);
// Get the HTML result
var context = { title: 'My New Post', body: 'This is my first post!' };
var compiledHTML = template(context);
// Write the HTML into our output
$('#output').html(compiledHTML);
Using helpers to enhance your templates
Handlebars helpers can be used to add formatting (with Expression Helpers) and enhanced logic operations (with Block Expression Helpers) to your content. See Handlebars documentation to learn how to use and write your own helpers.
Fliplet apps and widget interfaces are loaded with the following helpers.
Expression Helpers
images
(orimage
) outputs multiple<img>
tags based on the URLs provided, e.g.{{images url}}
url
A single image URL or an array of image URLsjoin
(optional) Add ajoin
parameter to set a custom string used to separate multiple image tags, e.g.{{images url join="<br>"}}
auth
outputs an authenticated URL for any encrypted assets stored by Fliplet, e.g.{{auth url}}
url
URL to be authenticated
moment
outputs a date/time value based on the provided format, e.g.{{moment timestamp format="MMM Do YY"}}
to format a date, or{{moment timestamp inputFormat="H:mm" format="h:mm a"}}
to format a timestamp based on a specific input format. See github.com for the full documentation.nl2br
changes any new lines or carriage returns in the value to a<br>
tag, adding a new line to the HTML output, e.g.{{nl2br str}}
str
String to be parsed for new lines
plaintext
outputs the combined text contents of HTML markup, e.g.{{plaintext html}}
html
HTML markup to be processed
removeSpaces
outputs the string with all spaces removed, e.g.{{removeSpaces str}}
str
String to be processed
toJSONString
changes any objects to a JSON string, e.g.{{toJSONString obj}}
obj
Object to be parsed into a JSON string
get
gets the value at path of object based on_.get()
, with support for a custom default value if the resolved value is undefined, e.g.{{ get path defaultValue }}
path
Path of the property to getdefaultValue
The value returned for undefined resolved values
Available with List (from data source) component only
formatCSV
ensures that"
characters are removed if the input is a CSV that contains"
characters due to,
being used in a value, e.g."Washington, D.C.", New York
will be formatted intoWashington, D.C., New York
Block Expression Helpers
compare
, e.g.{{#compare a '===' b}}{{else}}{{/compare}}
- The second parameter can be swapped out with any of the following operators for comparison:
==
,===
,!=
,!==
,<
,>
,<=
,>=
,&&
,||
typeof
(e.g.{{#compare a 'typeof' 'string'}}{{else}}{{/compare}}
)
- The second parameter can be swapped out with any of the following operators for comparison:
Deprecated
ifCond
Alias of and works the same way ascompare
equals
checks if two values provided are exactly the same, e.g.{{#equals a b}}{{else}}{{/equals}}
. This is the same as{{#compare a '===' b}}{{else}}{{/compare}}
.and
checks if two conditions are both truthy, e.g.{{#and a b}}{{else}}{{/and}}
. This is the same as{{#compare a '&&' b}}{{else}}{{/compare}}
.or
checks if one of the two conditions are truthy, e.g.{{#or a b}}{{else}}{{/or}}
. This is the same as{{#compare a '||' b}}{{else}}{{/compare}}
.