arcgis flexviewer全部的小部件类均继承自com.esri.viewer.BaseWidget基类,而BaseWidget又继承了com.esri.viewer.IBaseWidget接口。全部的小部件又由WidgetManager类进行管理。所以,要实现从Application向widget传值,须要经由WidgetManager完成。例如,用户登陆时记录了用户名,在widget中须要对用户名进行验证,可经过下述步骤将用户名(字符串)传递到全部的继承了上述小部件基类的widget中。函数
一、修改IBaseWidget接口文件,增长下述函数定义:测试
function set userName(value:String):void; function get userName():String;
二、在基类BaseWidget中实现上述方法:flex
private var _username:String; [Bindable] public function get userName():String { return _username; } public function set userName(value:String):void { _username = value; }
三、按照上述方法,在WidgetManager中定义相关的变量和属性存取器,以下:this
private var user_name:String; [Bindable] public function set userName(value:String):void { user_name = value; } [Bindable] public function get userName():String { return user_name; }
四、假设Application中(通常为主页)有一个名为userNameStr的字符串变量,在WidgetManager的MXML声明中作以下定义:spa
<viewer:widgetManager> <managers:WidgetManager id="widgetManager" userName="{userNameStr}"/> </viewer:widgetManager>
五、在WidgetManager类的createWidget函数中,在widget.map = map;语句以后添加下述代码:code
widget.userName = this.userName;
六、测试。用户名为admin,在小部件中添加:blog
Alert.show("Widget: " + this.userName);
执行相关代码,可见到来自小部件的消息框:继承
DONE.接口