/architecture-examples/backbone/js/collections/todos.js
JavaScript | 49 lines | 26 code | 11 blank | 12 comment | 2 complexity | 686728756e5a3d0b6a9a98c00b2a6142 MD5 | raw file
- var app = app || {};
- (function() {
- 'use strict';
- // Todo Collection
- // ---------------
- // The collection of todos is backed by *localStorage* instead of a remote
- // server.
- var TodoList = Backbone.Collection.extend({
- // Reference to this collection's model.
- model: app.Todo,
- // Save all of the todo items under the `"todos"` namespace.
- localStorage: new Store('todos-backbone'),
- // Filter down the list of all todo items that are finished.
- completed: function() {
- return this.filter(function( todo ) {
- return todo.get('completed');
- });
- },
- // Filter down the list to only todo items that are still not finished.
- remaining: function() {
- return this.without.apply( this, this.completed() );
- },
- // We keep the Todos in sequential order, despite being saved by unordered
- // GUID in the database. This generates the next order number for new items.
- nextOrder: function() {
- if ( !this.length ) {
- return 1;
- }
- return this.last().get('order') + 1;
- },
- // Todos are sorted by their original insertion order.
- comparator: function( todo ) {
- return todo.get('order');
- }
- });
- // Create our global collection of **Todos**.
- app.Todos = new TodoList();
- }());