2010-05-28 2 views
0

У меня возникли проблемы с «редактируемым» элементом управления textArea.Flex 3 - Проблемы с textArea «редактируемые» свойства

У меня есть компонент: OrderView.mxml и связанный с ним класс данных OrderViewData.as.

Orderview.mxml находится внутри viewStack, чтобы включить навигацию от компонента к другому. В этом конкретном случае OrderView.mxml вызывается другим компонентом: SearchResult.mxml. Таким образом, я могу перейти от SearchResult.mxml к OrderView.mxml и вернуться к SearchResult.mxml ...

OrderView.mxml имеет textArea и textInput, которые должны быть доступны для редактирования или недействительны в зависимости от свойства var isEditable: Boolean из OrderViewData.as.

Когда приложение запущено, isEditable = true. Таким образом, все элементы управления textInput и textArea редактируются при первом доступе пользователя к OrderView.mxml. Когда пользователь нажимает на кнопку кнопки из OrderView.mxml, isEditable = false. Когда пользователь возвращается к SearchResult.mxml, isEditable = true (снова) -> Пока здесь все работает нормально.

Дело в том, что, когда пользователь возвращается к OrderView.mxml во второй раз (и за его пределами), даже если свойство isEditable = true, элементы управления textArea по-прежнему не редактируются ... Но элементы управления textInput доступны для редактирования!

Вот код для вашего понимания: OrderView.mxml

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" 
    backgroundColor="#F3EDEC"> 

    <mx:TextArea 
     id="contentTA" 
     text="{OrderViewData.instance.contentTA}" 
     enabled="{OrderViewData.instance.isEnabled}" 
     width="100%" height="51" 
     maxChars="18" styleName="ORTextInput" 
     focusIn="if(OrderViewData.instance.isEditable) contentTA.setSelection(0, contentTA.length)" 
     editable="{OrderViewData.instance.isEditable}"/> 

    <mx:TextInput id="contentTI" 
     text="{OrderViewData.instance.contentTI}" 
     width="40" height="18" maxChars="4" 
     styleName="ORTextInput" 
     change="contentTI_change()" 
     focusIn="if(OrderViewData.instance.isEditable) contentTI.setSelection(0, contentTI.length)" 
     editable="{OrderViewData.instance.isEditable}"/> 
</mx:Canvas> 

ли я что-то отсутствует?

ответ

0

Ну, похоже, кто имеет больше идей ...

я придумал не очень чистым раствором. Но он работает ...

Я использовал функцию init в событии show компонента, где я создаю элемент управления и добавляю его в соответствующий родительский элемент. Таким образом, MXML код, написанный до этого был удален =)

Эта функция инициализации выглядит следующим образом:

private function init():void 
{ 
    // contentTA 
    if(contentTA != null && parentBox.contains(contentTA)) 
     parentBox.removeChild(contentTA); 

    contentTA = new TextArea; 

    contentTA.text = OrderViewData.instance.contentTA; 
    contentTA.enabled = OrderViewData.instance.isEnabled; 
    contentTA.percentWidth = 100; 
    contentTA.height = 51; 
    contentTA.maxChars = 50; 
    contentTA.styleName = "ORTextInput"; 
    contentTA.editable = OrderViewData.instance.isEditable; 
    contentTA.addEventListener(FocusEvent.FOCUS_IN, focusIn); 

    parentBox.addChild(contentTA); 

    // same thing for all the other textAreas of my component  
    ... 
} 
1

Вы сделали свою переменную isEditable [Bindable]?

+0

Привет! Да, переменная Bindable. Как я уже сказал, элементы управления textInput учитывают модификацию переменной isEditable. Я добавил предупреждение в textArea, чтобы показать значение isEditable и свойство, редактируемое элементом управления. Даже если для параметра «isEditable» установлено значение true, «редактируемый» остается установленным в false ... –

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