これがあなたの質問に具体的に答えているとは思いませんが、あなたが何をしようとしているのかを理解できるかもしれません。
Spine にはあまり文書化されていない .one() イベントがあります
ソースから:
one: (ev, callback) ->
@bind ev, ->
@unbind(ev, arguments.callee)
callback.apply(this, arguments)
したがって、基本的には舞台裏でバインド解除を行いますが、実際に「バインド解除」をトリガーするモデルのバインド解除は使用しません。
unbind: (ev, callback) ->
unless ev
@_callbacks = {}
return this
list = @_callbacks?[ev]
return this unless list
unless callback
delete @_callbacks[ev]
return this
for cb, i in list when cb is callback
list = list.slice()
list.splice(i, 1)
@_callbacks[ev] = list
break
this
対。
unbind: ->
@trigger('unbind')
いくつかの場所で @item.one を使用していますが、問題なく動作することがわかりました。
使用例:
@item.one 'awaitingPermit', (item) =>
@navigate('/document', item.id, 'show')
更新:
Spine.js に欠けているこの機能に対するいくつかの解決策に取り組みました。この問題のスレッドを参照してください https://github.com/spine/spine/issues/418