未捕获的类型错误:对象#<LanPartys>没有方法'呼叫'

Uncaught TypeError: Object #<LanParties> has no method 'call'

本文关键字:lt LanPartys 呼叫 有方法 gt 类型 错误 对象      更新时间:2023-09-26

我正在尝试循环遍历集合,并为集合中的每个模型渲染模板。我做错了什么?

顶层视图:

class App.Views.Content extends Backbone.View
  className: 'views-container'
  template:  HandlebarsTemplates['app/templates/content']
  render: ->
    @$el.html(@template())
    @renderEmptyView()
    @renderLanParties()
    @
  renderEmptyView: ->
    v = new App.Views.Empty()
    @$('.content-wrapper').html(v.render().el)
  renderLanParties: ->
    v = new App.Views.LanParties({ collection: new App.Collections.LanParties })
    @$('.lan-list').html(v.render().el)

视图渲染集合:

class App.Views.LanParties extends Backbone.View
  className: 'lan-parties-list'
  template:  HandlebarsTemplates['app/templates/lan_parties']
  initialize: ->
    @listenTo @collection, 'reset', @render()
    @collection.fetch({ reset: true })
  render: ->
    @$el.html(@template())
    @collection.forEach @renderLanParty, @
    @
  renderLanParty: (model) ->
    v = new App.Views.LanParty({ model: model })
    @$('ul').append(v.render().el)

型号:

class App.Models.LanParty extends Backbone.Model
class App.Collections.LanParties extends Backbone.Collection
  model:  App.Models.LanParty
  url: "/lan_parties"

在App.Views.LanParties中,不调用@render,更改

@listenTo @collection, 'reset', @render()

@listenTo @collection, 'reset', @render

您可能希望在App.Views.Content.中实例化新的App.Collections.LanPartys