You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
983 B
CoffeeScript
36 lines
983 B
CoffeeScript
13 years ago
|
class AsciiIo.Views.CommentsIndex extends Backbone.View
|
||
|
|
||
|
el: '#comments'
|
||
|
template: JST['backbone/templates/comments/index']
|
||
|
|
||
|
events:
|
||
|
'submit #new-comment': 'createComment'
|
||
|
|
||
|
initialize: ->
|
||
|
@collection.on('reset', @render, this)
|
||
|
@collection.on('add', @render, this)
|
||
|
|
||
|
render: ->
|
||
|
$(@el).html @template
|
||
|
$comments = this.$('.comments')
|
||
|
|
||
|
@collection.each (comment) ->
|
||
|
view = new AsciiIo.Views.CommentEntry({ model: comment, collection: @collection})
|
||
|
$comments.append view.render().el
|
||
|
|
||
|
this
|
||
|
|
||
|
createComment: (event) ->
|
||
|
event.preventDefault()
|
||
|
attrs = body: $('#comment-body').val()
|
||
|
@collection.create attrs,
|
||
|
wait: true
|
||
|
success: -> $('#new-comment')[0].reset()
|
||
|
error: @handleError
|
||
|
|
||
|
handleError: (comment, response) ->
|
||
|
if response.status == 422
|
||
|
errors = $.parseJSON(response.responseText).errors
|
||
|
for attribute, messages of errors
|
||
|
alert "#{attribute} #{message}" for message in messages
|