2011-04-27 33 views
0

我有一箇中繼器,用於創建名爲「Block」的自定義組件。我需要這樣做,以便當用戶單擊按鈕時,由轉發器創建的所有塊都將其可見字段設置爲false(然後再次單擊該按鈕時爲true)。Flex 3:由中繼器創建的隱藏元素

下面是一些代碼,我現在所擁有的:

<mx:Repeater id="indPositions" dataProvider="{projectPositions}" startingIndex="0"> 
     <components:block height="24" 
      width="100%" id="thisBlock" visible="true" horizontalScrollPolicy="off" 
      oneDay="{oneDay}" 
     /> 
    </mx:Repeater> 

這裏的按鈕,用戶會點擊顯示/隱藏塊:

<mx:Button id="showHideButton" label="Show Project" x="{addBlock.x + addBlock.width + 2}" click="showProjectSwitch();" /> 

這裏的功能showProjectSwitch():

public function showProjectSwitch():void { 
      if (showHideButton.label == "Hide Project") 
      { 
       showHideButton.label = "Show Project"; 
       indPositions.visible = false; 
       thisProject.height = 65; 
      } 
      else 
      { 
       showHideButton.label = "Hide Project"; 
       indPositions.visible = true; 
       thisProject.height = projectHeight ; 
      } 
     } 

我試着設置projectRP.visible =「true/false」,但它沒有工作:(

我也嘗試在轉發器周圍包裹畫布,但是當我這樣做時...儘管事實上我有startIndex =「0」和count =「16」,但轉發器只運行一次。然後我刪除了畫布標籤,並且中繼器運行了正確的次數。

有人能幫助我嗎?

回答

0

實現你想要的最簡單的方法就是使用數據綁定,就像你對「oneDay」值所做的一樣。

<mx:Repeater id="indPositions" dataProvider="{projectPositions}" startingIndex="0"> 
    <components:block height="24" 
     width="100%" id="thisBlock" visible="true" horizontalScrollPolicy="off" 
     oneDay="{oneDay}" 
     visible="{showBlocks}" 
    /> 
</mx:Repeater> 
<mx:Boolean id="showBlocks" /> 

[編輯爲了更加清晰] 要更改塊的知名度,你需要設置showBlocks的價值,就像這樣:

showBlocks = true; 

showBlocks = false; 
+0

你能解釋一下這個嗎? 不是組件類型,即使它是,我不知道我是否理解這將如何改變塊的可見狀態。 – Brds 2011-04-27 20:38:17

+0

相當於在Actionscript中聲明一個布爾變量,因此您可以將它分配爲true或false。每個塊都通過添加屬性visible =「{showBlocks}」與這個變量數據綁定。無論何時爲「showBlocks」賦值true,所有塊都會將它們的「visible」屬性設置爲true。 – 2011-04-28 14:40:17

0

下面是我解決它的方法...因爲每當創建塊時聲明變量名稱「thisBlock」,所有這些信息都存儲在rray。學習之後,我能創造一個,用於在功能每個循環按下了顯示/隱藏按鈕時被稱作......在每個循環是這樣的:

for (var I:int = 0; i < dataprovidername.length; i++) 
    thisBlock[i].visible = true/flase; 

希望可以幫助有人在未來。