JSFiddle - React, Tailwind, and code Playground
by rich_harris
HTML
<script src="http://cdn.ractivejs.org/edge/ractive.js"></script>
<main></main>
<script id='template' type='text/ractive'>
{{#if foo}}
<p>foo is true</p>
{{/if}}
{{#if bar}}
<widget/>
{{/if}}
</script>
CSS
body {
font-family: 'Helvetica Neue', arial, sans-serif;
font-weight: 200;
color: #353535;
}
h1, h2, h3, h4, h5, h6 {
font-weight: 200;
}
.error {
color: #d00;
font-family: monospace;
}
JavaScript
Ractive.components.widget = Ractive.extend({
template: '<p>and so is bar</p>'
});
var ractive = new Ractive({
el: 'main',
template: '#template',
oninit: function () {
// we can observe specific values...
this.observe( 'foo', function ( foo ) {
if ( foo ) {
this.find( 'p' ).style.color = 'red';
}
}, { defer: true }); // `defer: true` means 'wait until after the DOM is updated'
// ...or we can listen for child 'render' events
this.on( 'widget.render', function () {
this.findComponent( 'widget' ).find( 'p' ).style.color = 'blue';
});
}
});
setTimeout( function () {
ractive.set( 'foo', true );
}, 1000 );
setTimeout( function () {
ractive.set( 'bar', true );
}, 2000 );