我使用迄今优秀的'javascript-state-machine'库。但是,我的事件看起来像A),我有几个过渡回调看起来像B)。我有一个类似的'onafterevent'回调在其他地方工作。但''afterafterpart'没有解雇,我不明白为什么。javascript-state-machine onafterevent不被称为
我是i)致电'my-state-machine.EEpart',它应该在整个转换过程中触发回调。和ii)'onbeforeepart'正在被调用。所以我不知道为什么这个事件没有被调用。
之前有人看过类似的东西吗?提前致谢。
A)
esm : StateMachine.create({ initial: 'Es', events: [ { name: 'EsE', from: 'Es', to: 'E' }, { name: 'EEpart', from: 'E', to: 'Epart' }, { name: 'EpartE', from: 'Epart', to: 'E' }, { name: 'EEs', from: 'E', to: 'Es' } ]
B)
onbeforeEEpart: (event, from, to, args) -> ... onafterEEpart: (event, from, to, args) -> ...
UPDATE [03月23日; 2:49 am]
我试着从Epart-> E手动转换,并在A)中得到错误。看起来E-> Epart的过渡从未完成。我有一个理由说明为什么。
在上一次转换之后,我必须将下一个转换附加到点击函数,如B所示。这样做包括使用下划线将我的转换函数重新绑定到状态机。我认为这是导致错误。如果是这样,是否有正确的方法来传递过渡函数来解雇?
由于
A)
Uncaught event EpartE inappropriate because previous transition did not complete
B)
onafterPreviousEvent: (event, from, to, args) -> console.log('END Transition from Es->E') $(my-element) .bind('click', { fu: bar }, _.bind(args.data.esm.EEpart, args.data.esm)) # state machine is 'args.data.esm'