编辑方法
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);
我甚至试图使用重置并取得成功...但长度为零
我知道背骨是延迟加载的
如何使用等到获取完成......?
答案 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)