todomvc
Version:
> Helping you select an MV\* framework
50 lines (38 loc) • 1.06 kB
text/coffeescript
class window.Todos extends Spine.Controller
ENTER_KEY = 13
ESCAPE_KEY = 27
TPL = Handlebars.compile $('#todo-template').html()
elements:
'.edit': 'editElem'
events:
'click .destroy': 'remove'
'click .toggle': 'toggleStatus'
'dblclick label': 'edit'
'keydown .edit': 'revertEditOnEscape'
'keyup .edit': 'finishEditOnEnter'
'blur .edit': 'finishEdit'
constructor: ->
super
.bind 'update',
.bind 'destroy',
render: =>
TPL( )
@
remove: ->
.destroy()
toggleStatus: ->
.updateAttribute 'completed', !.completed
edit: ->
.addClass 'editing'
.val(.val()).focus()
finishEdit: ->
.removeClass 'editing'
val = $.trim .val()
if val then .updateAttribute( 'title', val ) else
finishEditOnEnter: (e) ->
if e.which is ENTER_KEY
revertEdit: ->
.removeClass 'editing'
.val(.title)
revertEditOnEscape: (e) ->
if e.which is ESCAPE_KEY