BB Skeleton

by kyllle

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-alpha1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.2/backbone-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.5/handlebars.min.js"></script>
<div class="js-app"></div>

<script type="text/template" class="tmpl-person">
    <p>{{name}}</p>
    <p>{{country}}</p>
</script>

SCSS

* {
  -webkit-font-smoothing: antialiased;
}

body {
    padding: 5%;
}

JavaScript

console.clear();

var data = {
	"name": "Joe Bloggs",
	"country": "USA"
};

var PersonModel = Backbone.Model.extend();


var Person = Backbone.View.extend({
	template: Handlebars.compile( $('.tmpl-person').html() ),
    initialize: function() {
    	this.listenTo(this.model, 'change:name', function(model, name) {
        	console.log('Changed name from ' + model.previous('name') + ' to ' + name);
        });
    },
    render: function() {
    	this.$el.html( this.template( this.model.toJSON() ) );
        return this;
    }
});

var personModel = new PersonModel(data);
var person = new Person({
	model: personModel
});

setTimeout(function() {
	personModel.set('name', 'James Bay');
}, 5000);

$('.js-app').html( person.render().el );