UNPKG

todomvc

Version:

> Helping you select an MV\* framework

60 lines (49 loc) 1.49 kB
/*global Todos, Ember */ (function () { 'use strict'; Todos.TodoController = Ember.ObjectController.extend({ isEditing: false, // We use the bufferedTitle to store the original value of // the model's title so that we can roll it back later in the // `cancelEditing` action. bufferedTitle: Ember.computed.oneWay('title'), actions: { editTodo: function () { this.set('isEditing', true); }, doneEditing: function () { var bufferedTitle = this.get('bufferedTitle').trim(); if (Ember.isEmpty(bufferedTitle)) { // The `doneEditing` action gets sent twice when the user hits // enter (once via 'insert-newline' and once via 'focus-out'). // // We debounce our call to 'removeTodo' so that it only gets // made once. Ember.run.debounce(this, 'removeTodo', 0); } else { var todo = this.get('model'); todo.set('title', bufferedTitle); todo.save(); } // Re-set our newly edited title to persist its trimmed version this.set('bufferedTitle', bufferedTitle); this.set('isEditing', false); }, cancelEditing: function () { this.set('bufferedTitle', this.get('title')); this.set('isEditing', false); }, removeTodo: function () { this.removeTodo(); } }, removeTodo: function () { var todo = this.get('model'); todo.deleteRecord(); todo.save(); }, saveWhenCompleted: function () { this.get('model').save(); }.observes('isCompleted') }); })();