Removing child content from ViewStack


in application can add content inside viewstack when try remove it, app breaks.

 

// testproject.mxml (main application)

<?xml version="1.0" encoding="utf-8"?>
<s:windowedapplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       xmlns:mx="library://ns.adobe.com/flex/mx">
    <s:layout>
        <s:verticallayout/>
    </s:layout>
    <fx:script>
        <![cdata[
            import com.newcontent;
           
            private function addcontent():void
            {
                var content:newcontent = new newcontent();
                var navcontent:navigatorcontent = new navigatorcontent();
                navcontent.id = 'newcontent';
                navcontent.label = 'newcontent';
                navcontent.width = number('100%');
                navcontent.height = number('100%');
                navcontent.addelement(content);
               
                viewstack.addelement(navcontent);
                viewstack.selectedchild = navcontent;
            }
        ]]>
    </fx:script>
    <mx:viewstack id="viewstack" width="100%" height="100%">
        <s:navigatorcontent id="defaultcontent"
                            label="defaultcontent">
            <s:button click="addcontent()" label="add content"/>
        </s:navigatorcontent>
    </mx:viewstack>
</s:windowedapplication>

 

// newcontent.mxml (component)

<?xml version="1.0" encoding="utf-8"?>
<s:group xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:s="library://ns.adobe.com/flex/spark"
         xmlns:mx="library://ns.adobe.com/flex/mx"
         width="100%" height="100%">
    <fx:script>
        <![cdata[
            import mx.containers.viewstack;
           
            public function removecontent():void
            {
                viewstack(this.parent).selectedindex = 0;
                this.parent.removechild(this);
            }
        ]]>
    </fx:script>
    <s:button click="removecontent()" label="remove content"/>
</s:group>

 

any appreciated trying work (if best way it). in advance.

hi ,

 

check code.

private function addcontent():void
{
     var content:newcontent = new newcontent();
     content.addeventlistener("removeme",onremove,false,0,true);
     var navcontent:navigatorcontent = new navigatorcontent();
     navcontent.id = 'newcontent';
     navcontent.label = 'newcontent';
     navcontent.width = number('100%');
     navcontent.height = number('100%');
     navcontent.addelement(content);
     
     viewstack.addelement(navcontent);
     viewstack.selectedchild = navcontent;
}

private function onremove(event:event):void
{
     var content:newcontent = event.currenttarget newcontent;
     content.removeeventlistener("removeme",onremove,false);
     viewstack.removechild(content.parent.parent.parent);
}

 

//component

<?xml version="1.0" encoding="utf-8"?>
<s:group xmlns:fx="http://ns.adobe.com/mxml/2009"
     xmlns:s="library://ns.adobe.com/flex/spark"
     xmlns:mx="library://ns.adobe.com/flex/mx"
     width="100%" height="100%">
     <fx:script>
          <![cdata[
               public function removecontent():void
               {
                    dispatchevent(new event("removeme"));
               }
          ]]>
     </fx:script>
     <s:button click="removecontent()" label="remove content"/>
</s:group>

 

to access navigatorcontent, content.parent.parent.parent used. not sure if there better way access parent of child added using addelement() method.



More discussions in Flex (Read Only)


adobe

Comments

Popular posts from this blog

Hur installera Joomla på One.com - Joomla! Forum - community, help and support

removing index.php from URL address - Joomla! Forum - community, help and support

「イメージマップのアンカー名には、...」のエラーが出ないようにしたい