【问题标题】:How to add children to accordion children in flex 4?如何在flex 4中将孩子添加到手风琴孩子?
【发布时间】:2011-10-28 15:03:07
【问题描述】:

我已经花了几个小时试图解决这个问题...任何帮助将不胜感激!!!

我有一个 ArrayCollection,它被读取以通过编程方式在手风琴中生成容器:

    <s:ArrayCollection id="_ac_ps">
        <fx:Object label="Block and lot" data="_blocklot"  searchType="districtblocklot"  info="" />
        <fx:Object label="Address" data="_address" searchType="singletxtstring"  info=""/>
        <fx:Object label="Owner name" data="_owner" searchType="singletxtstring"  info=""/>
        <fx:Object label="Advanced data mining" data="_advanced" searchType="advancedmining"  info=""/>
    </s:ArrayCollection>

这就是我生成手风琴孩子的方式:

    for (var num1:int = 0; num1 <= _ac_ps.length - 1; num1++)
                    {
                        navContent = new NavigatorContent();
                        navContent.percentWidth = 100;
                        navContent.percentHeight = 100;
                        navContent.label = _ac_ps[num1].label;
                        navContent.id = ""+_ac_ps[num1].data;
                        navContent.name = ""+_ac_ps[num1].data;
                        ////(""+navContent.id);
                        _searchAccordion.addChild(navContent);
                    }

这很好用。现在我要做的是根据手风琴中导航器内容的id,添加孩子。例如,我想在 navigatorContent 中添加一个 Label 类型的子项,其 id 为“_blocklot”,但在 navigatorContent 对象中添加一个文本输入框,其 id 为“_address”。

    private function loadSearchControls( ):void
        {
            var accordionChildren:Array = _searchAccordion.getChildren();
            for each(var currentnavContent:NavigatorContent in accordionChildren)
            {
                Alert.show (""+currentnavContent.id, "currentnavContent.id");
                if (currentnavContent.id == "_blocklot")
                {

                    try{
                        var _label:Label = new Label();
                        _label.text = "come on now!!!!!!";
                        //SO HOW DO I CAPTURE THE ID SO THAT I CAN ADD THIS LABEL AS A CHILD???
                        //_searchAccordion._blocklot.addChild(_label);  does not work

                    }
                    catch(errorObj:Error)
                    {
                        Alert.show("nope");
                    }


                }
                else if (currentnavContent.id == "_address" )
                {
                    Alert.show("bbb");
                }
            }

【问题讨论】:

标签: actionscript flex4 accordion


【解决方案1】:

这应该适合你。您已经确定 currentNavContent 是否是您想要的,所以只需将控件添加到 currentNavContent。

        private function loadSearchControls(event:MouseEvent):void
        {
            var accordionChildren:Array = _searchAccordion.getChildren();
            for each(var currentnavContent:NavigatorContent in accordionChildren)
            {
                Alert.show (""+currentnavContent.id, "currentnavContent.id");
                if (currentnavContent.id == "_blocklot")
                {

                    try{
                        var _label:Label = new Label();
                        _label.text = "come on now!!!!!!";
                        //SO HOW DO I CAPTURE THE ID SO THAT I CAN ADD THIS LABEL AS A CHILD???
                        //_searchAccordion._blocklot.addChild(_label);  does not work
                        currentnavContent.addElement(_label);

                    }
                    catch(errorObj:Error)
                    {
                        Alert.show("nope");
                    }


                }
                else if (currentnavContent.id == "_address" )
                {
                    Alert.show("bbb");
                }
            }
        }

【讨论】:

  • 由于嵌套动态子节点的复杂性,我们用手风琴绕过了整个概念。
猜你喜欢
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多