问题:
自定义Flex组件,如果采用As方式,可以重写构造函数,使用时直接通过A a=new A(model);的方式使用。但是如果采用Mxml方式,无法重写构造函数,那么如何在new A()时传递参数呢?
解决方案:
引入set get方法,flex编译器在编译mxml=》as时,默认先设置属性,组件初始化时会先确保set 方法调用优先
例子代码:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" >
- <mx:Script>
- <![CDATA[
- import com.alibaba.process.bpm.model.HttpNodeModel;
- private var _model:HttpNodeModel;
- public function set model(model:HttpNodeModel){
- _model=model;
- }
- [Bindable]
- public function get model():HttpNodeModel{
- return _model;
- }
- ]]>
- </mx:Script>
- <mx:Form>
- <mx:FormItem label="url:">
- <mx:TextInput text="{model.serviceModel.url}" width="200" height="20"/>
- </mx:FormItem>
- </mx:Form>
- </mx:VBox>
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Script>
<![CDATA[
import com.alibaba.process.bpm.model.HttpNodeModel;
private var _model:HttpNodeModel;
public function set model(model:HttpNodeModel){
_model=model;
}
[Bindable]
public function get model():HttpNodeModel{
return _model;
}
]]>
</mx:Script>
<mx:Form>
<mx:FormItem label="url:">
<mx:TextInput text="{model.serviceModel.url}" width="200" height="20"/>
</mx:FormItem>
</mx:Form>
</mx:VBox>
使用这个组件传参数:
- var box:HttpNodeModelBox = new HttpNodeModelBox();
- box.model=new HttpNodeModel();
- addChild(box);

浙公网安备 33010602011771号