JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://yastatic.net/bem-components/latest/desktop/bem-components.css">
<script src="https://yastatic.net/jquery/2.1.4/jquery.min.js"></script>
<script src="https://yastatic.net/lodash/2.4.1/lodash.min.js"></script>
<script src="https://yastatic.net/backbone/1.1.2/backbone.js"></script>
<script src="https://yastatic.net/bem-components/latest/desktop/bem-components.js+bh.js"></script>
<div class="form"></div>
<div class="json"></div>
JavaScript
function bemRender(element, bemjson, callback) {
modules.require(['i-bem__dom', 'BEMHTML'], function(BEMDOM, BEMHTML) {
var html = BEMHTML.apply(bemjson);
BEMDOM.append(element, html);
if(typeof callback == 'function') {
callback();
}
});
}
var SelectView = Backbone.View.extend({
events: {
'change input': 'onCheck'
},
initialize() {
this.model = new Backbone.Model();
this.model.on('change', this.renderValue, this);
this.renderValue();
},
render() {
bemRender(this.$el, {
block : 'checkbox-group',
mods : { theme : 'islands', size : 'm'},
name : 'checks',
options : [
{ val : 'block', text : 'Блок' },
{ val : 'elm', text : 'Элемент' },
{ val : 'mod', text : 'Модификатор' }
]
});
},
renderValue() {
$('.json').html(JSON.stringify(this.model.toJSON()))
},
onCheck(e) {
this.model.set(e.target.value, e.target.checked)
}
});
var selectview = new SelectView({el: '.form'});
selectview.render();