2011-07-19 44 views
0

當我點擊數據網格中的一行時,加載了「PeopleDetails」狀態。在細節狀態,我有一個複選框。該複選框在我創建表單時自動生成。這是因爲People表中的字段是布爾值。如何根據對象成員的值在Flex組件上做一個if-else?

我其實不想有一個複選框,但我希望在標籤旁邊打印Yes/No值。

所以我寫了一些嵌入在MXML代碼代碼:

<s:Form includeIn="PeopleDetails"> 
<s:FormItem label="Is Present?"> 
    <fx:Script> 
    <![CDATA[ 
    if(person!= null){ 
    if(person.present==true){ 
    Alert.show("Test - Yes"); 
    } 
    } 
    else{ 
    Alert.show("No"); 
    } 
    ]]> 
    </fx:Script> 
    <s:CheckBox id="personCheckBox2" enabled="false" selected="{person.present}"/> 
</s:FormItem> 
</s:Form> 

只是爲了測試目的,我必須警告的彈出窗口。最後,我將更改爲打印以篩選值是/否。

問題: - 我不知道如何測試是否在對象人屬性目前是真還是假。 在上面,我得到一個FB投訴1120:訪問未定義的財產人。

如果我刪除AS代碼,複選框工作正常。該複選框使用person.present知道是否應該檢查。爲什麼我不能使用person.present來執行if-else測試?

我將不勝感激任何幫助。

回答

1

如果我讀你的權利,你想有一個是/否值,而不是一個複選框,這應該爲你做它:

變化:

<s:CheckBox id="personCheckBox2" enabled="false" selected="{person.present}"/> 

要:

<s:Label text="{(person.present)?'Yes':'No'}"/> 

因此,新的形式如下:

<s:Form includeIn="PeopleDetails"> 
     <s:FormItem label="Is Present?"> 
      <s:Label text="{(person.present)?'Yes':'No'}"/> 
     </s:FormItem> 
    </s:Form> 
+0

謝謝你Nate!這就像超級魅力一樣工作! – shailenTJ

+0

沒有問題,?操作員非常棒!謝謝接受:) – Nate

1

您不能在腳本方式下將腳本代碼放置在Script標記中。您只能按照OOP方式放置屬性和方法。因此,把你的代碼放在一個方法中,並把這個方法作爲某個事件的反應(例如creationComplete)。

1

我希望上面的代碼是ItemRenderer的一部分。

只是移動上面的腳本塊代碼來設置數據()函數如下:

override public function set data(value: Object): void 
    { 
     super.data = value; 

     if(person != null){ 
      if(person.present==true){ 
       Alert.show("Test - Yes"); 
      } 
     } 
     else{ 
      Alert.show("No"); 
     } 
    } 

另外,我不認爲警報將在ItemRenderer的工作,所以與跟蹤(「」)語句來替換它。希望它有幫助。

相關問題