javascript状态机onafterevent是't被叫
javascript-state-machine onafterevent isn't being called
我使用的是迄今为止出色的"javascript状态机"库。然而,对于看起来像A)的事件,我有一些看起来像B)的转换回调。我有一个类似的"onafterevent"回调,在其他地方也有效。但是"内部零件"没有开火,我不知道为什么。
我正在调用'my-state-machine.EEpart',它应该在整个转换过程中触发回调。并且ii)正在调用"oneforeEEpart"。所以我不知道为什么这个匿名者没有接到电话。
以前见过这样的东西吗?提前谢谢。
A)
esm:StateMachine.create({首字母:'Es',事件:[{name:"EsE",从:"Es"到:"E"},{name:"EEpart",从:"E"到:"Epart"},{name:"EpartE",从:"Epart"到:"E"},{name:"EE",从:"E"到:"Es"}]
B)
onbeforeEEpart:(event,from,to,args)->。。。onafterEpart:(event,from,to,args)->。。。
更新【2012年3月23日;凌晨2:49】
我尝试从Epart->E手动转换,但在A)中出现了错误。从E->Epart的过渡似乎从未完成。我有一个理论来解释为什么。
在上一个转换之后,我不得不将下一个转换附加到单击函数,如B)所示。这样做包括使用下划线将转换函数重新绑定到状态机。我认为这是造成错误的原因。如果是的话,是否有正确的方法来传递要激发的转换函数?
感谢
A)
未捕获事件EpartE不合适,因为以前的转换未完成
B)
onafterPreviousEvent:(event,from,to,args)->console.log("结束从Es->E的转换")$(我的元素).bind('click',{fu:bar},_.bind(args.data.esm.EEpart,args.data.sim))#状态机为"args.data.exm"
好的,我解决了这个问题。事实证明,我有一个onleaveE事件函数,它正在返回StateMachine.ASYNC标志。回调工作流程如下,调用onleaveE并返回ASYNC标志后才能调用onafterEpart:
- onbeforevent-在事件之前启动
- onleavestate-离开旧状态时被激发
- componentstate-在进入新状态时被激发
- 事后解雇
通常,当您返回StateMachine.ASTNC标志时,您必须在StateMachine对象上手动调用transition()。这很棘手,我已经有一天左右的时间了。希望这能在未来帮助到别人。
相关文章:
- 事件和状态
- 获取选择框的状态
- 相位器状态未捕获参考错误
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何使用密码检测网络中的状态连接
- Ember.js-接口状态应该存储在哪里
- Getconnection()不适用于状态机
- 为什么这个简单的函数不能在这个javascript状态机中的这个对象上运行
- 反应本机,错误地设置状态中的项目值
- 在反应本机中更新状态需要很长时间
- 设置状态 [反应本机] 后无法编辑输入文本
- JavaScript 的分层状态机
- 从列表视图传递 React 本机状态
- 实现用于 JavaFx2.0 游戏框架的简单状态机
- javascript状态机onafterevent是't被叫
- 流星状态机
- 当抛出错误时,反应本机提取无法设置状态
- 如何将json的上下文无关语法转换为状态机
- 从服务器代码(和状态)更新客户机浏览器中的画布元素
- 这是唯一标识从Ajax到Servlet请求的客户机状态的最佳选择