Я использую превосходную библиотеку 'javascript-state-machine' .Однако, с моими событиями, которые выглядят как A), у меня есть несколько обратных вызовов перехода, которые выглядят как B).У меня есть аналогичный обратный вызов onafterevent, который работает в другом месте.Но 'onafterEEpart' не стреляет, и я не могу понять, почему.
Я i) вызываю 'my-state-machine.EEpart' , что должно вызывать обратные вызовы на протяжении всего перехода.И ii) 'onbeforeEEpart' вызывается.Так что я в недоумении, почему этот onafterevent не называют.
Кто-нибудь видел что-нибудь подобное раньше?Заранее спасибо.
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) ->
...
ОБНОВЛЕНИЕ [23/23/2012;2:49 утра]
Я попытался вручную перейти с 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'