javascript - 为什么我的 Backbone Collection 重置事件没有触发?

标签 javascript ruby-on-rails-3 backbone.js coffeescript

我完成了 Railscast 教程并使其一切正常。正在制作一个快速原型(prototype),看看 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)

View 渲染得很好,但 @assets 的长度返回为 0。我可以执行控制台中的步骤,当我再次渲染 View 时,它会返回正确的长度。我做错了什么?

编辑:

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

最佳答案

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

关于javascript - 为什么我的 Backbone Collection 重置事件没有触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18960834/

相关文章:

javascript - 如何从集合中获取json对象键名并迭代

javascript - 绑定(bind)以添加到backbone.js集合

javascript - 使用 Javascript 的图形编辑器

javascript - 面向对象的javascript : initialize an attribute with a self function call

javascript - 单击一行时,如何将 "selected"类添加到表格的一行?

javascript - 计算类元素的未知/动态数组长度

ruby-on-rails - 如何一次为所有类变量制作 'attr_reader' 或 'attr_writer'?

ruby-on-rails - 如何在确认后使 Devise 重定向

ruby-on-rails - Rails设计:after_confirmation

javascript - 如何监听 backbone 中的 HTTP 事件