[英]on fetch collection is getting zero in backbone
編輯方法
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);
我什至嘗試使用重置並成功獲取...但是長度為零
我知道背部骨頭是懶惰的
等待提取完成后如何使用...?
將這些行替換為:
editCollection: (event) =>
. . .
selectCheckbox: (event) =>
. . .
這是一個函數調用:
@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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.