javascript - 为什么我的Backbone 集合不重置事件触发?

  显示原文与译文双语对照的内容
119 3

我浏览了Railscast教程,一切都正常了。 用一个快速的原型来查看 Backbone 是否可以行,但我已经弄乱了一些东西,并且我不确定。 我在 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 在 Rails 上生成的所有样板。

时间: 原作者:

77 3

在路由器创建过程中,你被称为 fetch() 过早。 应在特定的路由代码中调用。 实现它的方式在触发路由之前可以完成,因这里在触发 reset 之后开始监听。

原作者:
...