Initialisation Options
edit this pageThe following is a complete list of initialisation options, with full descriptions below grouped by category.
| Option | Category | Description |
|---|---|---|
| adapt | data | adaptors to use |
| adaptors | data | registry of available adaptors |
| append | placement | how to handle existing content in the dom |
| complete | transitions | fine-tune template placement in the dom |
| components | templating | components to include for use by the template |
| computed | data | computed properties to include |
| css | templating | component only css to include on render |
| data | data | the data to bind to the template |
| debug | environment | increases app feedback |
| decorators | templating | decorators to include for use by the template |
| delimiters | parsing | delimiters to use when parsing the template |
| easing | transitions | easing functions to use in transitions |
| el | placement | render to this element in the dom |
| events | templating | events to include for use by the template |
| interpolators | transitions | interpolators to use for animating values |
| isolated | data | prevent components from accessing parent data and registries |
| lazy | binding | don't bind to every keypress |
| magic | binding | data object getters and setters that update view |
| modifyArrays | binding | array modification methods update the view |
| noCssTransform | templating | prevent transformation of component css |
| noIntro | transitions | do not apply transitions on render |
| partials | templating | partials to include for use by the template |
| preserveWhitespace | parsing | don't normalize template whitespace |
| sanitize | parsing | remove designated elements and event attributes |
| staticDelimiters | parsing | one-time binding parsing delimiters |
| staticTripleDelimiters | parsing | one-time binding non-escaped parsing delimiters |
| stripComments | parsing | remove HTML comments from templates |
| template | templating | specifies the template to use |
| transitions | transitions | transitions to include for use by the template |
| transitionsEnabled | transitions | allow transitions |
| tripleDelimiters | parsing | non-escaped parsing delimiters |
| twoway | binding | prevent updates from the view back to the model |
Templating
template
Stringor (if preparsing)ArrayorObjectThe template to use. If this is a string, it must be valid (if meaningless, until rendered) HTML:
template: '<p>{{greeting}} world!</p>',Otherwise this must be the output of Ractive.parse(), usually precompiled for use in the browser:
template: parsedTemplates.foo,Or alternatively, you can pass an id selector string like
#myTemplate- in this case, Ractive will use the contents of an element whose ID ismyTemplate:template: '#myTemplate'See the 60 second setup for an example of this.
Please note that while Ractive will fetch any element by ID and use its content as the template, browsers may escape the contents of tags like
<div>when initially rendered, leading to unexpected results in your template.The
<script>tag is a good option as browsers will not modify the contents and is the canonical way to include inline Ractive templates in the document. However, make sure to settype='text/ractive'or the browser will try and execute the contents as javascript and you'll get an exception.partials
ObjectA
key: valuehash of partials that are specific to this instance, wherekeyis the name of the partial (as referenced within templates as{{>myPartial}}), andvalueis either a valid template string or the output of Ractive.parse().partials: { myPartial: "<p>I'm a partial!<p>" }The partial name used in the template can also be used to lookup the partial by ID. See Partials for more info.
components
ObjectA
key: valuehash of components that are specific to this instance, wherekeyis the name of the component (as referenced within templates as<my-component></my-component>), andvalueis a valid component created by Ractive.extend().components: { 'my-component': Ractive.extend({ template: '#componentTemplate', init: function () {...} }) }See Components for more info.
decorators
ObjectA
key: valuehash of decorators that are specific to this instance, wherekeyis the name of the decorator (as referenced within templates as<div decorator="myDecorator"/>), andvalueis a is a decorator functions. See Decorators for more info.decorators: { 'myDomponent': function( node, fire) {...} }css
StringUsed on components to specify
cssstyles to be inserted into the document.noCSSTransform
BooleanDefaults to
false. Prevents component css from being transformed with scoping guids.
DOM Placement
el
StringorHTMLElementor jQuery-like collectionDirectives for the element to render to. Use
appendoption (see below) to control whether existing content is replaced.
stringid or selector, see valid selectorsel: '#container'HTMLElementDOM elementel: document.body- any
objwhereobj[0]is anHTMLElement, see jquery collectionsel: $('#container')append
Booleanor anchorDefaults to
false. Controls whether existing content is replace and optionally where to place the rendered content.
false- rendered content replaces any existing contents ofel// dom <div id='container'><p>existing content</p></div>// options el: '#container', append: false, //default template: '<p>new content</p>'// result <div id='container'><p>new content</p></div>truerendered content is appended toel// dom <div id='container'><p>existing content</p></div>// options el: '#container', append: true, template: '<p>new content</p>'// result <div id='container'><p>existing content</p><p>new content</p></div>- anchor is any valid option as specified in
elthat resolves to anHTMLElement. Rendered content is appended toelbefore anchor, see ractive.insert()// dom <div id='container'><p>red</p><p>blue</p><p>yellow</p></div>// options el: '#container', append: document.querySelector('p:nth-child(2)'), template: '<p>green</p>'// result <div id='container'><p>red</p><p>green</p><p>blue</p><p>yellow</p></div>
Data & Binding
data
ObjectorArrayorStringThe data with which to initialise.
// object data: { foo: 'bar' } // array data: [ 'red', 'blue', 'yellow' ] // string data: 'foo'computed
ObjectAn object that maps to a set of computed values.
computed: { area: '${width} * ${height}' }See Computed Properties for more information and examples .
magic
BooleanDefaults to
false. Whether or not to wrap data in ES5 accessors for automatic binding (see magic mode).var data = { foo: 'bar' }; new Ractive({ data: data } ); // will update automagically: data.foo = 'fizz'adapt
ArrayCustom wrappers to be used with all or part of the supplied data, see Adaptors. Can either be the adaptor itself, or the name of an adaptor registred via
Ractive.adaptors:Ractive.adaptors.myAdaptor = MyAdaptor1; new Ractive({ adapt: [ 'myAdaptor', MyAdaptor2 ] }adaptors
ObjectA
key: valuehash of adaptors that are specific to this instance. Usually theadaptproperty can directly specify which adaptors to use on this instance and theadaptorsproperty is used to register an adaptor on components orRactive.adaptors.adaptors: { myAdaptor: MyAdaptor }modifyArrays
BooleanDefaults to
true. Whether or not to modify array mutator methods to enable frictionless data binding with lists (see array modification).var items = [ 'red', 'blue' ]; new Ractive({ data: data, modifyArrays: true //default } ); // will update automagically: items.push( 'green' );twoway
BooleanDefaults to
true. Whether or not two-way data binding is enabled (see Two‐way binding).var ractive = new Ractive({ template: '<input value="{{foo}}">', data: { foo: 'bar' }, twoway: false }); // user types "fizz" into <input>, but data value is not changed: console.log( ractive.get( 'foo' ) ); //logs "bar" // updates from the model are still pushed to the view ractive.set( 'foo', 'fizz' ); // input now displays "fizz"Also see static delimiters for one-time binding
lazy
BooleanDefaults to
false. If two-way data binding is enabled, whether to only update data based on text inputs onchangeandblurevents, rather than any event (such as key events) that may result in new data.var ractive = new Ractive({ template: '<input value="{{foo}}">', data: { foo: 'bar' }, lazy: true }); // will not fire as user is typing ractive.on('change', function(){ // only happens on exiting <input> or return if submit console.log('changed!') })isolated
BooleanDefaults to
false. This option is typically only relevant as an extension option for Components. Controls whether the component will look outside itself for data and registry items.
Transitions & Animations
transitions
ObjectA
key: valuehash of transitions that are specific to this instance. Thekeyis referenced within templates usingintroandoutroattributes on elements, andvalueis a transition functions, see Transitions for more info.template: '<p intro="slide" outro="slide">hello world</p>', transitions: { slide: function ( t, params ) {...} }noIntro
BooleanDefaults to
false. Whether or not to skip intro transitions on render.var ractive = new Ractive({ template: '<ul>{{#items}}<li intro="fade">{{.}}</li>{{/items}}</ul>', data: { items: [ 'red', 'blue' ] }, transitions: { fade: function ( t, params ) {...} }, noIntro: true }); // 'red' and 'blue' list items do not fade in on intro ractive.get('items').push( 'green' ); // 'green' list item will fade incomplete
FunctionA function that will be called when render is complete (i.e. all intro transitions have finished). If there are no intro transitions, this function will be called as soon as the instance is created)
template: '<p intro="fade">hello</p>', transitions: { fade: function ( t, params ) {...} }, complete: function () { console.log( '<p> has completed fade in!' ); }easing
ObjectA
key: valuehash of easing function. See Ractive.easinginterpolators
ObjectA
key: valuehash of interpolators use by ractive.animate()
Parsing
delimiters
Arraywhere[ open, close ]Defaults to
[ '{{', '}}' ]. Used to set what delimiters to use when parsing templates.template: 'hello <%= world %>', delimiters: [ '<%=', '%>' ], data: { world: 'earth' } // result: hello earthtripleDelimiters
Arraywhere[ open, close ]Defaults to
[ '{{{', '}}}' ]. Used to set what triple delimiters to use when parsing templates.template: 'hello @html@', tripleDelimiters: [ '@', '@' ], data: { html: '<span>world</span>' } // result: hello <span>world</span>staticDelimiters
Arraywhere[ open, close ]Defaults to
[ '[[', ']]' ]. Used to set what static (one-time binding) delimiters to use when parsing templates.var ractive = new Ractive({ template: 'hello [[foo]]', staticDelimiters: [ '[[', ']]' ], /default data: { foo: 'world' } }); // result: "hello world" ractive.set( 'foo', 'mars' ); // still is: "hello world"staticTripleDelimiters
Arraywhere[ open, close ]Defaults to
[ '[[[', ']]]' ]. Used to set what static (one-time binding) triple delimiters to use when parsing templates.var ractive = new Ractive({ template: 'hello [[[html]]]', staticTripleDelimiters: [ '[[[', ']]]' ], /default data: { html: '<span>world</span>' } }); // result: "hello <span>world</span>" ractive.set( 'html', '<span>mars</span>' ); // still is: "hello world"preserveWhitespace
BooleanDefaults to
false. Whether or not to preserve whitespace in templates when parsing. (Whitespace in<pre>elements is always preserved.)var ractive = new Ractive({ template: '<p>hello\n\n \tworld </p>', preserveWhitespace: false //default }); console.log( ractive.toHTML() ); // "<p>hello world</p>" var ractive = new Ractive({ template: '<p>hello\n\n \tworld </p>', preserveWhitespace: true }); console.log( ractive.toHTML() ); // "<p>hello world </p>"Please note that the browser will still deal with whitespace in the normal fashion.
stripComments
BooleanDefaults to
true. Whether or not to remove comments in templates when parsing.template: '<!-- html comment -->hello world', stripComments: false // result: <!-- html comment -->hello worldsanitize
BooleanorObjectDefaults to
false. Iftrue, certain elements will be stripped from templates at parse time -<applet>,<base>,<basefont>,<body>,<frame>,<frameset>,<head>,<html>,<isindex>,<link>,<meta>,<noframes>,<noscript>,<object>,<param>,<script>,<style>and<title>- as will event attributes (e.g.onclick).template: '<p>some content</p><frame>Am I a bad element or just misunderstood?</frame>', sanitize: true // result: <p>some content</p>Alternatively, pass in an object with an
elementsproperty containing an array of blacklisted elements, and an optionaleventAttributesboolean (truemeans 'disallow event attributes').template: '<p>some content</p><div onclick="doEvil()">the good stuff</div>', sanitize: { elements: [ 'p' ], eventAttributes: true } // result: <div>the good stuff</div>Environment
debug
BooleanDefaults to
false. Increases the severity of response to unexpected events or unfound resources to help debug applications. Generally will throw errors or print console messages when otherwise things would print a console messages or fail silently.// throws when 'myPartial' not found: template: '<p>{{>myPartial}}</p>', debug: true