Skip to content

Instantly share code, notes, and snippets.

@kei-q
Created August 24, 2011 15:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kei-q/1168305 to your computer and use it in GitHub Desktop.
Save kei-q/1168305 to your computer and use it in GitHub Desktop.
hello-backbonejsをcoffeescriptで書いたもの https://github.com/arturadib/hello-backbonejs/blob/gh-pages/5.js
Backbone.sync = (method, model, success, error) ->
success()
class Item extends Backbone.Model
defaults:
part1: 'hello'
part2: 'world'
swap: ->
@set
part1: @get 'part2'
part2: @get 'part1'
class List extends Backbone.Collection
model: Item
class ItemView extends Backbone.View
tagName: 'li'
events:
'click span.swap': 'swap'
'click span.delete': 'remove'
initialize: ->
@model.bind 'change', @render
@model.bind 'remove', @unrender
render: =>
$(@el).html '<span style="color:black;">'+@model.get('part1')+' '+@model.get('part2')+'</span> &nbsp; &nbsp; <span class="swap" style="font-family:sans-serif; color:blue; cursor:pointer;">[swap]</span> <span class="delete" style="cursor:pointer; color:red; font-family:sans-serif;">[delete]</span>'
this
unrender: =>
$(@el).remove()
swap: =>
@model.swap()
remove: =>
@model.destroy()
class ListView extends Backbone.View
el: $('body')
events:
'click button#add': 'addItem'
initialize: ->
@collection = new List()
@collection.bind 'add', @appendItem
@counter = 0
@render()
render: =>
$(@el)
.append("<button id='add'>Add list item</button>")
.append("<ul></ul>")
addItem: =>
@counter++
item = new Item()
item.set
part2: item.get('part2') + @counter
@collection.add item
appendItem: (item) =>
itemView = new ItemView
model: item
$('ul', @el).append itemView.render().el
listView = new ListView()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment