问题:
自定义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>
使用这个组件传参数:
var box:HttpNodeModelBox = new HttpNodeModelBox();
box.model=new HttpNodeModel();
addChild(box);