我正在研究Flex中動態調查問卷的模板。在我的前一個線程中的更詳細的描述HERE如何檢查Flex 3中單選按鈕的狀態?
要創建問卷,我使用嵌套中繼器 - 一個用於問題,一個用於答案(因爲它們的數量可能會有所不同)。
<mx:Repeater id="r" dataProvider="{questions}">
<mx:Label text="{r.currentItem.question}" width="200"/>
<mx:Repeater id="r2" dataProvider="{r.currentItem.answers}">
<mx:RadioButton label="{r2.currentItem.text}" width="200"
click="answerHandler(event, event.currentTarget.getRepeaterItem())"/>
</mx:Repeater>
</mx:Repeater>
要了解我的數據提供商,它可能是最好檢查有無我以前的線程的答案 - 不是,如果我嘗試在這裏解釋更容易。
這裏的問題是......正如您所看到的,我爲每個單選按鈕創建了單擊事件處理程序,並且我的計劃是每次用戶選擇正確時執行playerScore ++(可以通過檢查布爾屬性「correct 「發送RepeaterItem)。
但是,我現在看到,即使按鈕已被選中,我仍然可以多次點擊該按鈕,即使它沒有改變視圖中的任何內容,它也會每次增加分數..我也會以處理用戶改變主意的情況(我可以爲每個好的答案給出+分,並指出錯誤,但這意味着,如果用戶選擇了更多錯誤的答案,我的分數將是負數,而我不想要它)。
因此,只需提交一個提交按鈕並檢查所有按鈕的狀態,以及只有在用戶單擊「提交」之後它們是正確的,方式纔會更加簡單。可能嗎?
@Constantiner嗯,但我怎樣才能創建多少組作爲問題?因爲如果我在外部中繼器之外創建一個RadioButtonGroup,我只能得到一個組。如果我嘗試在第一個重複器中創建它,我會收到一個錯誤:「無法在Repeater中生成初始化代碼,這是由於id或數據綁定在不是可視化子組件上的初始化代碼。」爲了能夠訪問每個組,我將不得不爲每個組分配一個ID。但是使用Repeater時甚至可以這麼做嗎? – Cela 2011-04-04 17:47:19
@Cela我建議你在獨立的MXML組件中提取內部中繼器組。 – Constantiner 2011-04-04 18:20:00
@Constantin我真的只是一個初學者......你能解釋一下嗎?我的獨立組件應該如何以及如何引用它?我試圖做到這一點,但我收到了很多錯誤。你能否根據我在我的問題中顯示的mxml代碼給出答案?謝謝.. – Cela 2011-04-04 19:20:50