为什么我的主干集合重置事件没有触发

Why isn't my Backbone Collection reset event firing?

本文关键字:事件 我的 集合 为什么      更新时间:2023-09-26

我浏览了Railscast教程并使其正常工作。制作一个快速原型以查看 Backbone 是否可行,但我搞砸了一些东西,我不确定我做错了什么。我在骨干 1 上。

视图

class Shsh.Views.AssetsIndex extends Backbone.View
template: JST['assets/index']
initalize: ->
  @collection.on('reset', @render, this)
render: ->
  $(@el).html(@template(assets: @collection))
  console.log('rendered')
  this

路由器

class Shsh.Routers.Assets extends Backbone.Router
  routes: 
    '': 'index'
  initialize: ->
    @collection = new Shsh.Collections.Assets()
    @collection.fetch({reset: true})
  index: ->
    view = new Shsh.Views.AssetsIndex(collection: @collection)
    $('#container').html(view.render().el)

视图呈现正常,但@assets的长度恢复为 0。我可以在控制台中完成这些步骤,当我再次渲染视图时,它会恢复为正确的长度。我做错了什么?

编辑:

我实际上也有一个集合和模型。那里的代码都是由Backbone On Rails生成的样板。

您在路由器创建中过早地调用fetch()。 应改为在特定路由代码中调用。 您实现它的方式,获取和重置可能会在触发路由之前完成,因此您将在触发路由后开始收听reset

我是个白痴。初始化在Shsh.Views.AssetsIndex中拼写错误。