BB: Sort collection

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/handlebars.js/4.0.5/handlebars.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.css">

SCSS

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

body {
    padding: 5%;
}

Babel + JSX

console.clear();

const data = [
	{
  	id: 1,
    name: 'Kyle'
  },
  {
  	id: 2,
    name: 'James'
  },
  {
  	id: 3,
    name: 'Andrew'
  }
];

let Employee = Backbone.Model.extend();
let Employees = Backbone.Collection.extend({
	model: Employee,
  sortKey: 'id',
  comparator(model) {
  	return model.get(this.sortKey);
  },
  sortByKey(key) {
  	this.sortKey = key;
    this.sort();
  }
});
let EmployeesView = Backbone.View.extend({
	initialize() {
  	this.listenTo(this.collection, 'sort', this.outputSort);
  },
  outputSort() {
  	console.log('Sorted', this.collection.toJSON());
  }
});

window.employees = new Employees(data);
window.employeesView = new EmployeesView({
	collection: window.employees
});

window.employees.sortByKey('name');