EmberJS Component Class Bindings - 24 Mar 2016
Here’s a quick post on using one of ember’s lesser known component features. While recently working on the game of life in ember, I was able to create a cell component without a template.
This was accomplished by using classNameBindings
, and a click
event
handler.
import Ember from 'ember';
const { get, set, computed } = Ember;
const { alias } = computed;
export default Ember.Component.extend({
tagName: 'span',
classNames: ['cell'],
classNameBindings: ['alive'],
alive: alias('cell.alive'),
click() {
set(this, 'alive', !get(this, 'alive'));
}
});
In this example, we’re using a simple version of classNameBindings
where
we’re just passing in a property. When the alive
property returns true
, the
alive
class is added. When that value is false, the cell component only has
the default cell
class.
Another way we could have handled this using classNameBindings
would be
passing in classes for both states.
classNameBindings: ['alive:enabled:disabled']
In this example, we would add the enabled
class for a truth value, and the
disabled
class for a false value.