我想创建mxml的实例(在我的例子中是EventList)并传递参数。我的事件列表是一个面板列表,所以我想传递参数并动态生成n个面板(n参数传递)。我有主要的应用程序,我点击按钮栏,当我点击第一个我想要例如在第二个按钮20面板(n = 20)等生成3个面板(n = 3)。 我怎样才能做到这一点?我如何通过n以及显示列表的最佳方式是什么?当我点击切换按钮时,我想生成列表!
答案 0 :(得分:2)
使用xmlnamespace(xmlns)访问源文件夹中的mxml文件。我创建了一个包含xmlns =“*”的应用程序(*表示您可以访问源文件夹中的任何组件)以访问myEvenList组件。我在这里传递n值。查看示例.HTH。
togglePanelCount.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application name="ToggleButtonBar_toggleOnClick_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="top"
backgroundColor="white" xmlns:eventList="*"> <mx:ToggleButtonBar id="toggleButtonBar"
dataProvider="{viewStack}" /><mx:ViewStack id="viewStack"
width="100%"
height="100%">
<eventList:myEventList n="5" id="List1"/>
<eventList:myEventList n="20" id="List2"/>
</mx:ViewStack></mx:Application>
myEvenList.mxml
<?xml version="1.0" encoding="utf-8"?><mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="createPanels()"><mx:Script> <![CDATA[ import mx.controls.Alert; import mx.containers.Panel; public var n:int; public function createPanels():void{ Alert.show("in create panel"); for(var i:int =0 ;i<n;i++){ var panel:Panel = new Panel(); panel.title = "panel"+(i+1); panelList.addChild(panel); } } ]]> </mx:Script><mx:VBox id="panelList" /></mx:Canvas>
PS:将n作为公共属性本身为您提供了一种传递面板数量的方法。即使在应用程序的mx:Script标记中,您也可以实例化myEventList对象并设置n的值而不是使用mxml标签