Backbone View方法在第一次加载时不会触发

时间:2013-05-19 21:56:44

标签: backbone.js coffeescript

加载entries/index时,应该触发@collection.each(@appendEntry)并将集合中的所有条目追加到#entries,但没有任何反应。如果我提交一个新条目,一切正常。

entries_index.js.coffee

class Raffler.Views.EntriesIndex extends Backbone.View

  template: JST['entries/index']

  events:
    'submit #new_entry':  'createEntry'

  initialize: ->
    @collection.on('add', @render, this)

  render: ->
    $(@el).html(@template(collection: @collection))
    @collection.each(@appendEntry)
    this

  appendEntry: (entry) ->
    view = new Raffler.Views.Entry()
    $('#entries').append(view.render().el)

  createEntry: (event) ->
    event.preventDefault()
    @collection.create name: $('#new_entry_name').val()

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

尝试在render内调用initialize

@collection.each(@appendEntry)位于您的渲染函数中,initialize期间您的视图未调用该函数。

添加项目后可以看到它的原因是每次通过绑定将项目添加到集合时都会调用渲染:@collection.on('add', @render, this)