子容器的动态生成与销毁

来源:互联网 发布:ww123btbtcom最新域名 编辑:程序博客网 时间:2024/05/22 16:52

Flex引入子容器有两种方式

1.通过MXML可视化标签,如

<ng:EmpSuggestion id="topManagerInput" text="{(globalTenantEntityBean.topManagers)[0].notesId}" />

2.在actionscript中添加,如

                    var emp1:EmpSuggestion = new EmpSuggestion();
                    emp1.name="emp1";
                    hbox1.addChild(emp1);

显然,第一种方式只是静态的容器,第二种才满足动态的添加。

本文便是基于第二种方式讨论子容器的动态添加与销毁,并如何赋予并获得子容器中的数据。例如我们要实现动态的添加输入框,同时给输入框赋值。生成后我们也能删除指定的子容器,最后把子容器中的值取出来。

第一步,引入一静态容器

            <mx:VBox id="tenantAdmin">
            </mx:VBox>

第二步,然后actionscript中动态添加,同时考虑到删除,所以子容器是HBox再嵌套textInput和delete的action(可以使按钮或图标),通过给按钮或图标加监控来实现特定hBox的删除。并给Child起个名字方便以后读数据时“认人”

                    var hbox1:HBox = new HBox();
                    hbox1.setStyle("verticalAlign","middle");
                    var img1:Image = new Image();
                    img1.source = deleteIcon;
                    img1.buttonMode = true;
                    img1.addEventListener(MouseEvent.CLICK,cancelFunction1)
                    var emp1:EmpSuggestion = new EmpSuggestion();
                    emp1.name="emp1";//起名字
                    hbox1.addChild(emp1);
                    hbox1.addChild(img1);//添加子容器
                    tenantAdmin.addChild(hbox1);

生成时可以通过按钮一个个触发,也可以通过数组循环来生成

上面代码中cancelFunction1就是实现删除,删除用的是removeChild方法,参数的生成:先选中对象event.currentTarget指的是click的那个按钮或Image,(event.currentTarget).parent是这个按钮的父容器,转化为HBox类。

                public function cancelFunction1(event:MouseEvent):void
                {
                    tenantAdmin.removeChild(HBox((event.currentTarget).parent));
                }

第三步,读取子容器中的数据,用getChildren()返回一个子容器的数组,我一开始取不到数据犯的错误就是for each(var hbox:HBox in topManager),后来trace的时候发现topManager里是没有子容器的,必须调用getChildren()方法取得子容器,再用getChildByName通过名字来取.

                        for each(var hbox:HBox in topManager.getChildren())
                        {
                            var ep:EmployeeVBean = new EmployeeVBean();
                            ep.empNotesId = (hbox.getChildByName("emp1")as EmpSuggestion).text;
                            arr.addItem(ep);
                        }

这样就取得了子容器里的内容了

原创粉丝点击