【问题标题】:on fetch collection is getting zero in backbone获取集合在主干中变为零
【发布时间】:2014-01-08 01:53:19
【问题描述】:

编辑方法

editCollection: (event) ->
  @collection = new BackboneDemo.Collections.Backbonescripts()
  @collection.url = "/demos/#{event.target.id}/test"
  @collection.fetch()
  @collection.on('sync', @selectCheckbox(event), this)

selectCheckbox: (event) ->
  console.info @collection.length
  @collection.each (test) ->
  $('#'+event.target.id+'.test #'+test.get('id')+'.test_checkbox').prop('checked', true);

我什至尝试使用重置和获取成功...但长度为零

我知道backbone是延迟加载

如何使用等待获取完成......?

【问题讨论】:

    标签: ruby-on-rails backbone.js coffeescript


    【解决方案1】:

    将这些行替换为:

    editCollection: (event) =>
      . . .
    selectCheckbox: (event) =>
      . . .
    

    【讨论】:

      【解决方案2】:

      这是一个函数调用:

      @collection.on('sync', @selectCheckbox(event), this)
      # ---------------------^^^^^^^^^^^^^^^^^^^^^^
      

      您正在调用 @selectCheckbox 并将其返回值传递给 @collection.on,就好像您这样说:

      x = @selectCheckbox(event)
      @collection.on('sync', x, this)
      

      所以您在'sync' 事件发生之前调用@selectCheckbox。我想你想说的是:

      @collection.on('sync', @selectCheckbox, @)
      # ---------------------^^^^^^^^^^^^^^^ Now just a function reference
      

      另外,您应该注意selectCheckbox 中的缩进,否则您的@collection.each 将使用空函数进行迭代:

      selectCheckbox: (event) ->
        console.info @collection.length
        @collection.each (test) ->
          $("##{event.target.id}.test ##{test.get('id')}.test_checkbox").prop('checked', true)
      

      【讨论】:

        猜你喜欢
        • 2013-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-11
        • 2015-08-23
        • 2014-08-18
        相关资源
        最近更新 更多