Created
January 16, 2012 08:39
-
-
Save yurfuwa-chan/1619755 to your computer and use it in GitHub Desktop.
spine example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ = jQuery | |
class Task extends Spine.Model | |
@configure "Task", "name", "done" | |
@extend Spine.Model.Local | |
@active: -> | |
@select (item) -> !item.done | |
@done: -> | |
@select (item) -> !!item.done | |
@destroyDone: -> | |
rec.destroy() for rec in @done() | |
class Tasks extends Spine.Controller | |
#events trigger | |
events: | |
"change input[type=checkbox]": "toggle" | |
"click .destroy": "remove" | |
"dblclick .view": "edit" | |
"keypress input[type=text]": "blurOnEnter" | |
"blur input[type=text]": "close" | |
#elements access | |
elements: | |
"input[type=text]": "input" | |
constructor: -> | |
super | |
@item.bind("update", @render) | |
@item.bind("destroy", @release) | |
render: => | |
@replace($("#taskTemplate").tmpl(@item)) | |
@ | |
toggle: -> | |
@item.done = [email protected] | |
@item.save() | |
remove: -> | |
@item.destroy() | |
edit: -> | |
@el.addClass("editing") | |
@input.focus() | |
blurOnEnter: (e) -> | |
if e.keyCode is 13 then e.target.blur() | |
close: -> | |
@el.removeClass("editing") | |
@item.updateAttributes({name: @input.val()}) | |
class TaskApp extends Spine.Controller | |
events: | |
"submit form": "create" | |
"click .clear": "clear" | |
elements: | |
".items": "items" | |
".countVal": "count" | |
".clear": "clear" | |
"form input": "input" | |
constructor: -> | |
super | |
console.log("sss") | |
Task.bind("create", @addOne) | |
Task.bind("refresh", @addAll) | |
Task.bind("refresh change", @renderCount) | |
Task.fetch() | |
addOne: (task) => | |
view = new Tasks(item: task) | |
@items.append(view.render().el) | |
addAll: => | |
Task.each(@addOne) | |
create: (e) -> | |
e.preventDefault() | |
Task.create(name: @input.val()) | |
@input.val("") | |
clear: -> | |
Task.destroyDone() | |
renderCount: => | |
active = Task.active().length | |
@count.text(active) | |
inactive = Task.done().length | |
if inactive | |
@clear.show() | |
else | |
@clear.hide() | |
$ -> | |
new TaskApp(el: $("#tasks")) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment