Describes a value of an HTML element attribute or textContent
. It allows combining multiple
data sources like static values and Observable
attributes.
Also see:
Attribute values can be described in many different ways:
// Bind helper will create bindings to attributes of the observable.
const bind = Template.bind( observable, emitter );
new Template( {
tag: 'p',
attributes: {
// A plain string schema.
'class': 'static-text',
// An object schema, binds to the "foo" attribute of the
// observable and follows its value.
'class': bind.to( 'foo' ),
// An array schema, combines the above.
'class': [
'static-text',
bind.to( 'bar', () => { ... } ),
// Bindings can also be conditional.
bind.if( 'baz', 'class-when-baz-is-true' )
],
// An array schema, with a custom namespace, e.g. useful for creating SVGs.
'class': {
ns: 'http://ns.url',
value: [
bind.if( 'baz', 'value-when-true' ),
'static-text'
]
},
// An object schema, specific for styles.
style: {
color: 'red',
backgroundColor: bind.to( 'qux', () => { ... } )
}
}
} );
Text nodes can also have complex values:
const bind = Template.bind( observable, emitter );
// Will render a "foo" text node.
new Template( {
text: 'foo'
} );
// Will render a "static text: {observable.foo}" text node.
// The text of the node will be updated as the "foo" attribute changes.
new Template( {
text: [
'static text: ',
bind.to( 'foo', () => { ... } )
]
} );