1 ------------------------------------------------
$ = jQuery class ListView extends Backbone.View el: $ 'body' initialize: -> _.bindAll @, 'render' @render() render: -> $(@el).append '<ul><li>Hello Backbone!</li></ul>' listView = new ListView
2 ------------------------------------------------
$ = jQuery
class ListView extends Backbone.View
el: $ 'body'
events:
'click button#add': 'addItem'
initialize: ->
_.bindAll @, 'render', 'addItem'
@counter = 0
@render()
render: ->
$(@el).append '<button id="add">Add list item</button>'
$(@el).append '<ul></ul>'
addItem: ->
@counter++
$('ul', @el).append "<li>Hello Backbone #{@counter}</li>"
listView = new ListView
3 ------------------------------------------------
$ = jQuery
class Item extends Backbone.Model
defaults:
part1: 'Hello'
part2: 'World'
class List extends Backbone.Collection
model: Item
class ListView extends Backbone.View
el: $ 'body'
events:
'click button#add': 'addItem'
initialize: ->
_.bindAll @, 'render', 'addItem', 'appendItem'
@collection = new List
@collection.on 'add', @appendItem
@counter = 0
# @collection.add [new Item, new Item]
@render()
render: ->
self = @
$(@el).append '<button id="add">Add list item</button>'
$(@el).append '<ul></ul>'
_(@collection.models).each ((item)->self.appendItem(item)), @
addItem: ->
@counter++
item = new Item
item.set
part2: item.get('part2') + ' ' + @counter
@collection.add item
appendItem: (item)->
$('ul', @el).append "<li>#{item.get('part1')} #{item.get('part2')}</li>"
listView = new ListView
4 ------------------------------------------------
$ = jQuery
class Item extends Backbone.Model
defaults:
part1: 'Hello'
part2: 'World'
class List extends Backbone.Collection
model: Item
class ItemView extends Backbone.View
tagName: 'li'
initialize: ->
_.bindAll @, 'render'
render: ->
$(@el).html "<span>#{@model.get('part1')} #{@model.get('part2')}</span>"
@
class ListView extends Backbone.View
el: $ 'body'
events:
'click button#add': 'addItem'
initialize: ->
_.bindAll @, 'render', 'addItem', 'appendItem'
@collection = new List
@collection.on 'add', @appendItem
@counter = 0
# @collection.add [new Item, new Item]
@render()
render: ->
self = @
$(@el).append '<button id="add">Add list item</button>'
$(@el).append '<ul></ul>'
_(@collection.models).each ((item)->
self.appendItem(item)), @
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
5 ------------------------------------------------
$ = jQuery
Backbone.sync = (method, model, success, error)->
success()
class Item extends Backbone.Model
defaults:
part1: 'Hello'
part2: 'World'
class List extends Backbone.Collection
model: Item
class ItemView extends Backbone.View
tagName: 'li'
events:
'click span.swap': 'swap'
'click span.delete': 'remove'
initialize: ->
_.bindAll @, 'render', 'unrender', 'swap', 'remove'
@model.on 'change', @render
@model.on 'destroy', @unrender
render: ->
$(@el).html """<span style='color:black'>
#{@model.get('part1')} #{@model.get('part2')}</span>
<span class='swap' style='color:blue; cursor:pointer;'>
[swap]</span>
<span class='delete' style='color:red; cursor:pointer;'>
[delete]</span>
"""
@
unrender: ->
$(@el).remove()
swap: ->
swapped =
part1: @model.get 'part2'
part2: @model.get 'part1'
@model.set swapped
remove: ->
@model.destroy()
class ListView extends Backbone.View
el: $ 'body'
events:
'click button#add': 'addItem'
initialize: ->
_.bindAll @, 'render', 'addItem', 'appendItem'
@collection = new List
@collection.on 'add', @appendItem
@counter = 0
@render()
render: ->
self = @
$(@el).append "<button id='add'>Add list item</button>"
$(@el).append "<ul></ul>"
_(@collection.models).each ((item)->
self.appendItem item), @
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
修改 Model ------------------------------------------------
$ = jQuery
class Item extends Backbone.Model
@counter: 0
@part1: 'Hello'
@part2: 'World '
defaults:
part1: Item.part1
part2: Item.part2
initialize: ->
Item.counter++
class List extends Backbone.Collection
model: Item
class ItemView extends Backbone.View
tagName: 'li'
events:
'click span.swap': 'swap'
'click span.delete': 'remove'
initialize: ->
_.bindAll @, 'render', 'unrender', 'swap', 'remove'
@model.on 'change', @render
@model.on 'destroy', @unrender
render: ->
$(@el).html """<span style='color:black'>
#{@model.get('part1')} #{@model.get('part2')}</span>
<span class='swap' style='color:blue; cursor:pointer;'>
[swap]</span>
<span class='delete' style='color:red; cursor:pointer;'>
[delete]</span>
"""
@
unrender: ->
$(@el).remove()
swap: ->
swapped =
part1: @model.get 'part2'
part2: @model.get 'part1'
@model.set swapped
remove: ->
@model.destroy()
class ListView extends Backbone.View
el: $ 'body'
events:
'click button#add': 'addItem'
initialize: ->
_.bindAll @, 'render', 'addItem', 'appendItem'
@collection = new List
@collection.on 'add', @appendItem
@render()
render: ->
self = @
$(@el).append "<button id='add'>Add list item</button>"
$(@el).append "<ul></ul>"
_(@collection.models).each ((item)->
self.appendItem item), @
addItem: ->
item = new Item
part2: Item.part2 + Item.counter
@collection.add item
appendItem: (item)->
itemView = new ItemView
model: item
$('ul', @el).append itemView.render().el
listView = new ListView
沒有留言:
張貼留言