我尝试使用去抖功能升级我的先行功能,到目前为止,我只使用以下代码取得了成功。它确实是去抖动请求,但是当我将函数定义为something = func (args) ->
时,它不会附加到View实例,我无法通过@collection
访问View的集合。但是,可以在View实例上找到定义为something: ->
的所有其他方法。为什么会这样?感谢。
class productsView extends Marionette.CompositeView
onDomRefresh: (options) ->
@initTypeahead()
initTypeahead: ->
console.log @
# outputs: productsView{...}
@ui.typeahead_input.typeahead {
hint: true
highlight: true
minLength: 1
},
source: (q, sync, async) =>
requestDebouncer q, sync, async
requestDebouncer = _.debounce (q, sync, async) =>
console.log @
# outputs: function productsView()...
console.log "debounced"
, 300
答案 0 :(得分:0)
我认为这是因为您在函数productsView()中声明了requestDebouncer。 尝试将requestDebouncer作为实例方法
kd> !handle 430
PROCESS 85c91030 SessionId: 0 Cid: 0388 Peb: 7ffdc000 ParentCid: 01e8
DirBase: 7ee841c0 ObjectTable: 8da023f0 HandleCount: 539.
Image: svchost.exe
Handle table at 9a3da000 with 539 entries in use
0430: Object: 8480e038 GrantedAccess: 00100080 Entry: 8da01860
Object: 8480e038 Type: (844f9ac8) File
ObjectHeader: 8480e020 (new version)
HandleCount: 1 PointerCount: 2
Directory Object: 00000000 Name: \ {HarddiskVolume2}
并将其称为@requestDebouncer
P.S。我从未使用过coffeescript,只猜测它是如何工作的。