Apache flex Flex-如何访问MXML中另一个组件内部的组件?

Apache 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%确定这就是你想要的,但

我有两个部分。一个叫做“内部comp”,另一个叫做“外部comp”。OutsideComp将InsideeComp作为其组件的一部分,在我的主MXML文件中,我嵌入了OutsideComp的一个实例。如何在主MXML文件中访问InsideComp的公共变量

在Actionscript中,我可以执行以下操作: 外部组件内部组件valToChange=5


但是我不知道如何在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>

以下是对其作用的简要说明:

  • 有3个MXML文件:

    • OuterClass:包含InnerClass的MXML文件
    • InnerClass:包含复选框的MXML文件
    • 应用程序:包含外部类的主应用程序
  • 主应用程序中有一个绑定,它接受复选框值(通过对象层次结构)并适当设置标签的文本字段。这和ActionScript的工作原理一样:使用。运算符访问嵌套对象

  • 当复选框更新时,标签的值也相应更新


  • 希望这能让事情变得更清楚一些。

    我正在更新这里的代码,以包含对外部类的引用。我不是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>
    
    
    
    以下是对其作用的简要说明:

  • 有3个MXML文件:

    • OuterClass:包含InnerClass的MXML文件
    • InnerClass:包含复选框的MXML文件
    • 应用程序:包含外部类的主应用程序
  • 主应用程序中有一个绑定,它接受复选框值(通过对象层次结构)并适当设置标签的文本字段。这和ActionScript的工作原理一样:使用。运算符访问嵌套对象

  • 当复选框更新时,标签的值也相应更新


  • 希望这能让事情变得更清楚一点。

    通过设置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中的属性,以便您方便地从顶层访问该属性。它将组件紧密地结合在一起,基本上使它们成为一个单独的组件