2012-02-17 76 views
0

我在Flex 4.5中使用s:TextInput。如果基礎文本值爲空或空字符串,它將顯示提示文本。有誰知道我是否可以不顯示空字符串的提示,甚至顯示不同的提示? 我已經找到了一種方法通過擴展TextInput類,並覆蓋了一些方法,但我仍然希望這裏的人都知道一個簡單的方法;-)使Flex TextInput在空字符串中不顯示任何提示字符串

+0

你是什麼意思'顯示不同的提示'?你想改變提示文字嗎?如果你刪除了提示屬性,它是不是也刪除了提示文字? – 2012-02-17 12:45:11

+0

我有兩種情況: 1. text == null =>顯示提示; 2. text ==「」=>不顯示提示(或不同的提示)。 僅將提示綁定到get函數不起作用,因爲TextInput不會在每次希望顯示提示時都加載它。 – 2012-02-17 13:39:04

+1

我明白了。所以主要問題是綁定到getter?如果是這樣,讓我知道,所以我可以給你一個正確的答案,用一些代碼。 – 2012-02-17 13:45:26

回答

1

好了,根據意見,那就是: 你存儲當前提示值的私有變量,像這樣:

private var _inputPrompt:String = ""; 

然後創建一個getter,所以價值是從這個類的外部訪問:

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

現在你可以綁定inputPrompt任何你需要的地方,但是,問題是一旦私人價值改變,getter將不會被召回。像這樣創建一個更新的方法,例如:到目前爲止

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 
} 

這樣,吸氣將回顧每次分派該事件的時間。

希望這會有所幫助。度過一個美好的一天,祝你週末愉快!