Apache flex Flex-如何访问MXML中另一个组件内部的组件?
我有两个部分。一个叫做“内部comp”,另一个叫做“外部comp”。OutsideComp将InsideeComp作为其组件的一部分,在我的主MXML文件中,我嵌入了OutsideComp的一个实例。如何在主MXML文件中访问InsideComp的公共变量 在Actionscript中,我可以执行以下操作: 外部组件内部组件valToChange=5Apache flex Flex-如何访问MXML中另一个组件内部的组件?,apache-flex,actionscript-3,actionscript,Apache Flex,Actionscript 3,Actionscript,我有两个部分。一个叫做“内部comp”,另一个叫做“外部comp”。OutsideComp将InsideeComp作为其组件的一部分,在我的主MXML文件中,我嵌入了OutsideComp的一个实例。如何在主MXML文件中访问InsideComp的公共变量 在Actionscript中,我可以执行以下操作: 外部组件内部组件valToChange=5 但是我不知道如何在MXML中实现它。我知道这可能是一个简单的问题。我正在更新这里的代码,以包含对外部类的引用。我不是100%确定这就是你想要的,但
但是我不知道如何在MXML中实现它。我知道这可能是一个简单的问题。我正在更新这里的代码,以包含对外部类的引用。我不是100%确定这就是你想要的,但我会尽我所能给你一个机会 外部类:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*">
<local:InnerClass id="inner" width="100%" height="100%" />
</mx:VBox>
内部类:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:CheckBox id="innerCheckbox" selected="true" />
</mx:VBox>
编辑:这是应用程序的更新版本
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal" xmlns:local="*">
<mx:Binding source="{outer.inner.innerCheckbox.selected.toString()}"
destination="checkLabel.text" />
<mx:Label id="checkLabel" />
<local:OuterClass id="outer" width="100%" height="100%" />
</mx:Application>
以下是对其作用的简要说明:
- OuterClass:包含InnerClass的MXML文件
- InnerClass:包含复选框的MXML文件
- 应用程序:包含外部类的主应用程序
希望这能让事情变得更清楚一些。我正在更新这里的代码,以包含对外部类的引用。我不是100%确定这就是你想要的,但我会尽我所能给你一个机会 外部类:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*">
<local:InnerClass id="inner" width="100%" height="100%" />
</mx:VBox>
内部类:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:CheckBox id="innerCheckbox" selected="true" />
</mx:VBox>
编辑:这是应用程序的更新版本
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal" xmlns:local="*">
<mx:Binding source="{outer.inner.innerCheckbox.selected.toString()}"
destination="checkLabel.text" />
<mx:Label id="checkLabel" />
<local:OuterClass id="outer" width="100%" height="100%" />
</mx:Application>
以下是对其作用的简要说明:
- OuterClass:包含InnerClass的MXML文件
- InnerClass:包含复选框的MXML文件
- 应用程序:包含外部类的主应用程序
希望这能让事情变得更清楚一点。通过设置MXML组件的id属性,可以有效地使其成为通过点表示法访问的公共属性。“通过MXML访问它”是一个有点诡计的问题。您可以在xml标记中使用绑定表示法,并将属性绑定到另一个属性,也可以在脚本块中以正常的AS3方式访问它。通过设置MXML组件的id属性,可以有效地使其成为可通过点表示法访问的公共属性。“通过MXML访问它”是一个有点诡计的问题。您可以在xml标记中使用绑定表示法并将属性绑定到另一个属性,也可以在脚本块中以正常的AS3方式访问它。我认为最直接的解决方法是使用脚本标记。这将允许您在熟悉的情况下运行。首先,需要为每个要编辑的属性分配ID
<mx:Script>
private function onCreationComplete (event:Event):void {
idOfTheOutsideComp.idOfTheInsideComp.propertyName = newValue;
}
</mx:Script>
私有函数onCreationComplete(事件:事件):void{
idOfTheOutsideComp.idOfTheInsideComp.propertyName=newValue;
}
我将此代码放在创建完成处理程序中,因为您不能简单地从脚本标记中运行代码,它需要在函数中运行 我认为回答这个问题最直接的方法是使用脚本标记。这将允许您在熟悉的情况下运行。首先,需要为每个要编辑的属性分配ID
<mx:Script>
private function onCreationComplete (event:Event):void {
idOfTheOutsideComp.idOfTheInsideComp.propertyName = newValue;
}
</mx:Script>
私有函数onCreationComplete(事件:事件):void{
idOfTheOutsideComp.idOfTheInsideComp.propertyName=newValue;
}
我将此代码放在创建完成处理程序中,因为您不能简单地从脚本标记中运行代码,它需要在函数中运行 在本例中,我没有看到您访问“OutsideComp”。看起来你只是在嵌入InnterComp。是吗?如果你还在做这个(如果你不感兴趣,不用担心——我只是想帮你:),看看最新的编辑。在这个例子中,我没有看到你访问“OutsideComp”。看起来你只是在嵌入InnterComp。是吗?如果你还在做这个(如果你不感兴趣,不用担心——我只是想帮你:),看看最新的编辑。你是说我应该在OuterComp中创建代码,将它的属性绑定到InnerComp的属性?这是我一直在考虑的路线,但它似乎不是最好的选择(虽然可能有更好的方法)几乎总是有更好的方法,但我以前使用过这种模式。InnerComp有一个绑定在OuterComp中的属性,以便您方便地从顶层访问该属性。它将组件紧密地结合在一起,本质上使它们成为一个单独的组件,但它可以工作。这样做不会给应用程序带来“负担”吗?它不会比另一种方法更能降低应用程序的速度?它根本不会降低应用程序的速度。你是说我应该在OuterComp内创建代码,将其属性绑定到InnerComp的属性?这是我一直在考虑的路线,但它似乎不是最好的选择(虽然可能有更好的方法)几乎总是有更好的方法,但我以前使用过这种模式。InnerComp有一个绑定在OuterComp中的属性,以便您方便地从顶层访问该属性。它将组件紧密地结合在一起,基本上使它们成为一个单独的组件