2015-02-17 4 views
2

Скажем, у меня есть следующие состояния:Несколько «когда» -условиям для государства

State 
{ 
    name: "red_state" 
    when: color === "red" 
}, 
State 
{ 
    name: "blue_state" 
    when: color === "blue" 
}, 
State 
{ 
    name: "square_state" 
    when: shape === "square" 
}, 
State 
{ 
    name: "circle_state" 
    when: shape === "circle" 
}, 
State 
{ 
    name: "blue_circle_state" 
    when: color === "blue" && shape === "circle" 
} 

«blue_circle_state» никогда не срабатывает, почему это происходит? Есть ли лучший способ иметь несколько условий для государства?

ответ

2

Там нет ничего плохого о создании нескольких условий для State в when, проблема здесь оказывает blue_state, circle_state и blue_circle_state все вычисляемое правду в то же время. documentation about the when property of a State говорит:

Если несколько состояний в группе есть, когда положения, оценивающие к истине, в то же время, первое состояние соответствия будет применяться.

Итак, когда цвет синий, а форма - круг, здесь активны только blue_state.

В вашей ситуации перемещение более конкретно blue_circle_state в начале поможет решить вашу проблему, но вы все равно не можете активировать несколько состояний одновременно.

Если вы хотите иметь более совершенную машину состояния, вы можете взглянуть на The Declarative State Machine Framework.

+0

Большое спасибо, я буду помнить об этом. –

Смежные вопросы