2012-02-17 3 views
0

Я использую s: TextInput в Flex 4.5. Он показывает, что это текст подсказки, если базовое текстовое значение равно null или пустой строке. Кто-нибудь знает, могу ли я сделать либо не показывать приглашение на пустой строке или даже показывать другое приглашение? я уже нашел способ, расширяя класс TextInput и перекрывая некоторые из методов, но я все еще надеясь, что кто-нибудь здесь знает простой способ ;-)Сделать Flex TextInput показать приглашение на пустую строку

+0

Что именно вы подразумеваете под «показать другое приглашение»? Вы хотите изменить текст подсказки? И если вы удаляете свойство prompt, не удаляет ли текст подсказки? –

+0

У меня есть два случая: 1. текст == null => показать приглашение; 2. текст == "" => не показывать приглашение (или другое). Простое связывание приглашения с функцией get не работает, потому что TextInput не загружает его каждый раз, когда он хочет показать приглашение. –

+1

Я вижу. Итак, основная проблема связана с геттером? Если да, дайте мне знать, чтобы я мог дать вам правильный ответ, с некоторым кодом. –

ответ

1

Итак, на основе замечаний, здесь: Вы сохраняете текущее оперативное значение в частной переменной, например, так:

private var _inputPrompt:String = ""; 

Затем вы создаете добытчика, так что значение доступно извне этого класса:

public function get inputPrompt():String 
{ 
    return _inputPrompt; 
} 

Теперь вы можете связать inputPrompt везде, где это необходимо, однако проблема заключается в том, что геттер не будет вызван после изменения частного значения. Вы можете исправить это очень легко: создайте метод обновления, например, так:

public function updateInputPrompt(value:String):void 
{ 
    _inputPrompt = value; 
} 

Хорошо, ничего особенного пока. Я предполагаю, что это тот момент, когда вы сейчас находитесь. Для того, чтобы «заставить», что геттерный следует напомнить, что вам нужно привязать его к событию, например, так:

[Bindable(event="inputPromptUpdated")] 
public function get inputPrompt():String 
{ 
    return _inputPrompt; 
} 

Наконец, вы можете просто отправить это событие, когда значение обновления (т.е. в updateInputPrompt метод):

public function updateInputPrompt(value:String):void 
{ 
    _inputPrompt = value; 
    dispatchEvent("inputPromptUpdated"); // For binding 
} 

Таким образом, добытчик будет напомнить, каждый раз, когда вы посылаете это событие.

Надеюсь, это поможет. Отличный день и отличный уик-энд!

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