2010-09-22 4 views
0

Ниже приводится упрощенная версия моего MXML:Как изменить состояние представления?

<s:BorderContainer> 
<s:states> 
    <s:State name="create"/> 
    <s:State name="edit"/> 
</s:states> 
<s:transitions> 
    <s:Transition fromState="create" toState="edit"> 
    <s:Sequence target="{creation}"> 
    <s:Fade/> 
    <s:RemoveAction/> 
    </s:Sequence> 
    </s:Transition> 
</s:transitions> 
<comp:create includeIn="create"/> 
<comp:edit includeIn="edit"/> 
</s:BorderContainer> 

В <comp:create includeIn="create"/> У меня есть кнопка, которая когда-то щелкнул вызовы: this.parent.currentState='edit'. Но по какой-то причине я получаю следующую ошибку: «Термин не определен и не имеет свойств ...», который указывает мне на строку this.parent.currentState='edit'. Кто-нибудь, что не так? Благодарю.

+3

Вы уверены, что [this.parent] указывает на [] ?? –

+1

+1 к @adrian. Я предлагаю запустить код в режиме отладки и посмотреть, что такое состояние этой строки. Нам, вероятно, придется пересмотреть код «создать», чтобы больше помочь. – JeffryHouser

+0

Я согласен с #Flextras. Пожалуйста, разместите весь код, чтобы мы могли также отлаживать. Одно можно сказать наверняка: в этой строке одно из следующих: null [this, this.parent, this.parent.currentState] –

ответ

0

Вы можете инкапсулировать это намного лучше.

Убедитесь, что компонент повторно отправляет событие щелчка, и вы можете сделать это, что гораздо лучше (и также имеет преимущество не завязывать создание и редактирование компонентов в BorderContainer)

что-то подобное. ..

<s:BorderContainer id="contentHolder"> 
    <s:states> 
     <s:State name="create"/> 
     <s:State name="edit"/> 
    </s:states> 
    <s:transitions> 
     <s:Transition fromState="create" toState="edit"> 
      <s:Sequence target="{creation}"> 
       <s:Fade/> 
       <s:RemoveAction/> 
      </s:Sequence> 
     </s:Transition> 
    </s:transitions> 

    <comp:create includeIn="create" click="contentHolder.currentstate='edit'"/> 
    <comp:edit includeIn="edit" click="contentHolder.currentstate='create'"/> 
</s:BorderContainer> 
Смежные вопросы