Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 如何在flex中访问内联组件的元素?_Apache Flex_Flex3_Components_Mxml_Itemrenderer - Fatal编程技术网

Apache flex 如何在flex中访问内联组件的元素?

Apache flex 如何在flex中访问内联组件的元素?,apache-flex,flex3,components,mxml,itemrenderer,Apache Flex,Flex3,Components,Mxml,Itemrenderer,我对内联组件有问题。我想从另一个组件访问内联组件。。在第一个组件中,我想更改第二个组件中名为“Add”的linkbutton的“enable”值。虽然我给了第二个“id”和“className”,但我既找不到它,也找不到它的元素。。有办法做到这一点吗 *在第一个组件中,“CodedDescriptionItemEditor”组件中有一个文本输入。我想验证它,并根据验证启用我上面提到的按钮 顺便说一下,这些都在数据网格中。在datagrid中,始终有一行可以输入数据,通过“添加”按钮可以保存数据。

我对内联组件有问题。我想从另一个组件访问内联组件。。在第一个组件中,我想更改第二个组件中名为“Add”的linkbutton的“enable”值。虽然我给了第二个“id”和“className”,但我既找不到它,也找不到它的元素。。有办法做到这一点吗

*在第一个组件中,“CodedDescriptionItemEditor”组件中有一个文本输入。我想验证它,并根据验证启用我上面提到的按钮

顺便说一下,这些都在数据网格中。在datagrid中,始终有一行可以输入数据,通过“添加”按钮可以保存数据。保存后,它似乎是文本

谢谢

这是我的密码:

<mx:columns>
        <mx:DataGridColumn headerText="{Problem}" wordWrap="true" textAlign="left" sortable="false">
            <mx:itemRenderer>
                <mx:Component>
                    <mx:VBox>
                        <mx:ViewStack selectedIndex="{outerDocument.index(data)}" >
                            <mx:HBox>
                                <mv:CodedDescriptionItemEditor id="editor" codePM="{outerDocument.problemListPanelPM.getProblemDescPM(data)}" 
                                    width="100%" styleName="phrFormItemInput"/>
                            </mx:HBox>
                            <mx:HBox>
                                <mv:CodedDescriptionItemRenderer id="renderer" codedDescPM="{outerDocument.problemListPanelPM.getProblemDescPM(data)}" />
                            </mx:HBox>  
                        </mx:ViewStack> 
                    </mx:VBox>
                </mx:Component>
            </mx:itemRenderer>
        </mx:DataGridColumn>
        <mx:DataGridColumn headerText="" textAlign="center" editable="false" width="50" resizable="false" sortable="false">
            <mx:itemRenderer>
                <mx:Component className="buttonColumn">
                        <mx:ViewStack selectedIndex="{outerDocument.index(data)}" >
                            <mx:HBox horizontalAlign="center" width="100%">
                                <mx:LinkButton id="Add" icon="@Embed('img/add.png')"
                                    toolTip="{outerDocument.Add_Problem}"
                                    click="outerDocument.addHandWritten()"
                                    enabled="false" />
                            </mx:HBox>
                            <mx:HBox horizontalAlign="center" width="100%">
                                <mx:LinkButton id="Delete" icon="@Embed('img/delete.png')"
                                    toolTip="{outerDocument.Remove_problem}"
                                    click="outerDocument.removeProblem()"/>
                            </mx:HBox>
                        </mx:ViewStack>                     
                </mx:Component>
            </mx:itemRenderer>                          
        </mx:DataGridColumn>
    </mx:columns>

MXML中的内联组件不是实例,而是类。所以这种“接触”是没有意义的。为了将这些知识结合起来操作它们,我建议您遵循以下简单规则(我遵循这些规则,并且在理解类/实例关系方面没有问题):

不要在MXML中使用内联组件,不包括网络上的简单情况 原型阶段

因此,在您的例子中,我建议您将内联组件提取到单独的MXML类中,并抛出所有
outerDocument
引用(您可以用冒泡事件替换它们)。在那之后,我认为理解和改进您的设计以及找到合适的解决方案会容易得多


另一个建议是使用数据驱动的方式操作渲染器。这种方式是操作数据提供者的数据项,而不是直接从外部文档获取和设置数据。使用数据绑定在不同列中的不同项目呈现器之间绑定更改的数据。

MXML中的内联组件不是实例,而是类。所以这种“接触”是没有意义的。为了将这些知识结合起来操作它们,我建议您遵循以下简单规则(我遵循这些规则,并且在理解类/实例关系方面没有问题):

不要在MXML中使用内联组件,不包括网络上的简单情况 原型阶段

因此,在您的例子中,我建议您将内联组件提取到单独的MXML类中,并抛出所有
outerDocument
引用(您可以用冒泡事件替换它们)。在那之后,我认为理解和改进您的设计以及找到合适的解决方案会容易得多


另一个建议是使用数据驱动的方式操作渲染器。这种方式是操作数据提供者的数据项,而不是直接从外部文档获取和设置数据。使用数据绑定在不同列中的不同项目呈现器之间绑定更改的数据。

在这种情况下,您可能希望在outerDocument中保留一个布尔变量isAddEnabled,并按如下方式更改您的enabled:

enabled="{outerDocument.isAddEnabled}"
根据您的验证条件,将此更改为已禁用。
由于您不希望将其应用于所有项目,请在数据提供程序中保留一个属性(首选)或保留另一个与数据提供程序长度相同的集合(不推荐)。

在这种情况下,您可能希望在outerDocument中保留一个布尔变量isAddEnabled,并按以下方式更改您的enabled:

enabled="{outerDocument.isAddEnabled}"
根据您的验证条件,将此更改为已禁用。
由于您不希望将其应用于所有项目,请在数据提供程序中保留一个属性(首选)或维护另一个与数据提供程序长度相同的集合(不推荐)。

“…将内联组件提取到单独的MXML类中…”我通常会尝试这样做,但这次我没有这样做。。感谢您的详细建议:)“…将内联组件提取到单独的MXML类中…”我通常会尝试这样做,但这次我没有这样做。。感谢您的详细建议:)