arcgis flexviewer中由Application向widget传值

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.接口

相关文章
相关标签/搜索