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
Post a Comment