define(function (require) { var controller = {}; // Take a model and view and act as the controller between them. controller.Controller = function (model, view) { this.model = model; this.view = view; this.ENTER_KEY = 13; this.ESCAPE_KEY = 27; }; controller.Controller.prototype.loadItems = function (items) { this.model.load(items); var list = document.getElementById("todo-list"); list.innerHTML = this.view.show(items); }; controller.Controller.prototype.addItem = function (title) { if (title.trim() === '') { return false; } var item = this.model.create(title); var list = document.getElementById("todo-list"); list.innerHTML += this.view.show([item]); return true; }; controller.Controller.prototype.removeItem = function (id) { this.model.remove(id); this.loadItems(this.model.items); }; controller.Controller.prototype.toggleComplete = function (id, checkbox) { var completed = checkbox.checked ? 1 : 0; this.model.update(id, {completed: completed}); this.loadItems(this.model.items); }; return controller; });