Guest User

Untitled

a guest
Jan 23rd, 2018
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1.  
  2. Backbone.sync = (method, model, success, error) ->
  3. success()
  4.  
  5. class Item extends Backbone.Model
  6. defaults:
  7. part1: 'hello'
  8. part2: 'world'
  9.  
  10. swap: ->
  11. @set
  12. part1: @get 'part2'
  13. part2: @get 'part1'
  14.  
  15. class List extends Backbone.Collection
  16. model: Item
  17.  
  18. class ItemView extends Backbone.View
  19. tagName: 'li'
  20.  
  21. events:
  22. 'click span.swap': 'swap'
  23. 'click span.delete': 'remove'
  24.  
  25. initialize: ->
  26. @model.bind 'change', @render
  27. @model.bind 'remove', @unrender
  28.  
  29. render: =>
  30. $(@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>'
  31. this
  32.  
  33. unrender: =>
  34. $(@el).remove()
  35.  
  36. swap: =>
  37. @model.swap()
  38.  
  39. remove: =>
  40. @model.destroy()
  41.  
  42. class ListView extends Backbone.View
  43. el: $('body')
  44.  
  45. events:
  46. 'click button#add': 'addItem'
  47.  
  48. initialize: ->
  49. @collection = new List()
  50. @collection.bind 'add', @appendItem
  51.  
  52. @counter = 0
  53. @render()
  54.  
  55. render: =>
  56. $(@el)
  57. .append("<button id='add'>Add list item</button>")
  58. .append("<ul></ul>")
  59.  
  60. addItem: =>
  61. @counter++
  62. item = new Item()
  63. item.set
  64. part2: item.get('part2') + @counter
  65. @collection.add item
  66.  
  67. appendItem: (item) =>
  68. itemView = new ItemView
  69. model: item
  70.  
  71. $('ul', @el).append itemView.render().el
  72.  
  73. listView = new ListView()
Add Comment
Please, Sign In to add comment