[英]address a Flex checkbox in a component
我在組件中有一個復選框:
<s:CheckBox id="myCB_1" />
在我的main.mxml中,我需要測試復選框的狀態。 我本來所有的代碼都保存在main.mxml中,但是它真的很長,我認為將代碼分解為組件是一種更好的做法。 另外,我還有其他將應用相同概念的項目,所以我真的很想弄明白這一點。
我有以下功能:
private function checkAlarms(currentTime:Date):void
{
if (!breakfastAlarmSounded)
{
if ((currentTime.hours > breakfastTime.hours) || ((currentTime.hours == breakfastTime.hours) && (currentTime.minutes >= breakfastTime.minutes)))
{
if (myCB_1.selected)
{
playBreakfastAudioAlarm();
}
if (myCB_2.selected)
{
playBreakfastVisualAlarm();
}
breakfastAlarmSounded = true;
}
}
...
只需解決組件,如:
myComponent.myCB_1.selected
不起作用。 有人提到我需要在我的組件中創建一個變量,該變量引用復選框的id(myCB_1),但是我並不真正了解或不知道該怎么做,因此也沒有詳細說明。
如何從main.mxml中測試組件中CheckBox“ myCB_1”的狀態?
非常感謝,
標記
(新手)
信息很少,我會懷疑您最初在Main.mxml中包含CheckBox並將其移到了自定義組件中。 如果是這樣,則需要通過自定義組件的ID尋址CheckBox的ID。 這樣的東西(來自main.mxml):
if(yourComponentsID.myCB_1.selected)
{
...
}
如果不是這種情況,請編輯您的帖子並給我們提供更多詳細信息。
編輯
您說您創建了一個新的自定義組件並將CheckBox移入其中。 太好了,這是一個有益的開端:)當你包含在你的main.mxml文件中的新組件,它應該是這個樣子:
<component:YourNewComponent />
當然,無論如何命名(以及使用哪個命名空間引用它)都將與我的示例不同,但是原理仍然適用。 在main.mxml中,您需要為自定義組件提供唯一的ID字符串,以便可以在main中引用它:
<component:YourNewComponent id="myComponent" />
從這里開始,您應該能夠引用該組件及其中的任何公共元素: myComponent.myCB_1
。
您需要通過組件引用該復選框。 假設您在主體中使用組件是這樣的:
<local:MyComponent id="myComponent" />
在腳本中,您想引用它:
if(myComponent.myCB_1.selected) { // do something }
提供有關您使用此腳本的上下文的更多詳細信息將很有用。 盡管如此,我將拋出一些可能有所幫助的信息。
為了使腳本能夠訪問組件,它必須在組件的范圍之內。 通常,這意味着以下之一:
<script>
標記,其中的代碼引用了同一MXML文件中的組件。 <script source='external.as'/>
標記,其中external.as
引用了MXML文件中的組件。 var myCB_1:CheckBox;
在類定義中)。 如果腳本和組件不在同一個范圍內,則它們將看不到彼此。
奇怪的是,它有效。 當我用點表示法(myComponent.myCB_1.selected)引用組件和1120錯誤(描述1120)時,遇到了1119錯誤(描述1119:通過具有靜態類型Class的引用訪問可能未定義的屬性myCB_1)。 :未通過myComponent尋址時,訪問未定義的屬性myCB_1)。
遇到這些錯誤,我從沒想過要嘗試運行它。 長話短說-它可以在有或沒有解決組件(???)的情況下運行!
感謝您的所有意見,並希望聽到其他意見。
MCE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.