为什么这个简单的函数不能在这个javascript状态机中的这个对象上运行
Why can't this simple function run on this object in this javascript state machine?
我正在使用Stately.js状态机作为节点.js
https://github.com/fschaefer/Stately.js/
我从一个简单的例子开始。
var fsm = Stately.machine({
'START': {
// event: function () {
// }
},
'NEXT_STATE': {
// event: function () {
// }
},
});
fsm.setMachineState(fsm.NEXT_STATE);
我收到错误TypeError: fsm.setMachineState is not a function
.可能出了什么问题?
不能从状态机外部更改状态。您需要将当前状态上的事件更改为另一个状态。
我找到了一些黑客解决方案,如果您不想更改 fsm 库,它允许您在状态机this
引用之外更改状态。
代替正常的状态转换,您可以定义自己的函数
通过将此功能添加到每个状态
'setState': function(stateName){
return this[stateName]
}
现在你的状态将如下所示,现在可以从状态机外部设置状态
var fsm = Stately.machine({
'START': {
'do_something': /* => */ 'NEXT_STATE',
'setState': function(stateName){
return this[stateName]
}
},
'NEXT_STATE': {
'setState': function(stateName){
return this[stateName]
}
},
});
fsm.setState('YOUR_STATE_NAME');
相关文章:
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- Meteor应用程序无法运行-对象#<编译器>没有方法'主机'
- 如何在javascript中在运行时获取对象/数组
- 如何运行对象映射函数
- Microsoft JScript运行时错误:无法获取属性'的值;样式':对象为null或未定义
- 未能运行构造函数:TypeError:对象#<对象>没有方法'addPlugin'
- ..的Javascript..循环中的对象没有在最后一个属性上运行
- 在CoffeeScript文件上运行Jasmine测试时,对象未定义错误
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 获取对在 JavaScript 中运行函数的对象的引用
- 页面对象中的 for 循环未正常运行
- 在运行时使用预先确定的对象分配变量
- setInterval 只在对象方法上运行一次
- 运行时错误:对象不支持属性或方法
- JavaScript 错误(Microsoft JScript 运行时错误:对象预期)
- 在运行时向 Javascript 对象添加属性
- Jhon Papa Angular Style guide Factory-对象内部的函数未运行
- 当我运行代码时,我得到以下结果 []对象对象] [对象对象],但应该给我一个有序数组
- Javascript 对象运行时更改
- 从对象运行jQuery Ajax