Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript从模型实例中解除特定事件处理程序的绑定?_Javascript_Spine.js - Fatal编程技术网

如何使用JavaScript从模型实例中解除特定事件处理程序的绑定?

如何使用JavaScript从模型实例中解除特定事件处理程序的绑定?,javascript,spine.js,Javascript,Spine.js,从模型类中解除特定事件处理程序的绑定非常容易,但从模型实例中解除事件处理程序绑定的唯一方法似乎是使用unbind()(不带参数)解除绑定附加到该实例的所有事件处理程序 对于模型实例,是否有与模型类“解除绑定([eventName,function])函数等效的方法,或者是否有其他更好的方法来解除特定处理程序的绑定,而不必全部解除绑定 我已经查过了,但到目前为止运气不好。将参数添加到unbind()函数没有任何效果-它只是忽略它们并取消所有绑定。我认为这并不能明确回答您的问题,但可能会让您了解您的

从模型类中解除特定事件处理程序的绑定非常容易,但从模型实例中解除事件处理程序绑定的唯一方法似乎是使用
unbind()
(不带参数)解除绑定附加到该实例的所有事件处理程序

对于模型实例,是否有与模型类“
解除绑定([eventName,function])
函数等效的方法,或者是否有其他更好的方法来解除特定处理程序的绑定,而不必全部解除绑定


我已经查过了,但到目前为止运气不好。将参数添加到
unbind()
函数没有任何效果-它只是忽略它们并取消所有绑定。

我认为这并不能明确回答您的问题,但可能会让您了解您的目的

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
vs

我们在一些地方使用@item.one,并发现它可以正常工作

示例用法:

@item.one 'awaitingPermit', (item) =>
  @navigate('/document', item.id, 'show')
更新:
我们已经为Spine.js中缺少的这一功能开发了一些解决方案。参见本期主题

最后,我们切换到了一个更适合我们需要的框架。上的维护似乎在去年9月停止了,尽管Spine支持使用JavaScript,但它的文档非常糟糕


如果有人能为最初的问题提供一个有效的解决方案,我仍然会接受它,以利于其他偶然发现这个问题的人。

从未对脊椎进行过处理,可能是一个bug。您能发布一些代码来确保吗?这和我们想要的不太一样,因为每个处理程序在解除绑定之前都可以被多次调用,而且我们没有使用CoffeeScript。
@item.one 'awaitingPermit', (item) =>
  @navigate('/document', item.id, 'show')