获取集合在主干上变为零

时间:2014-01-07 09:23:49

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

编辑方法

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);

我甚至试图使用重置并取得成功...但长度为零

我知道背骨是延迟加载的

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

2 个答案:

答案 0 :(得分:0)

替换以下行:

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

答案 1 :(得分:0)

这是一个函数调用:

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

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

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

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

@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)