• arcgis flexviewer中由Application向widget传值


    arcgis flexviewer所有的小部件类均继承自com.esri.viewer.BaseWidget基类,而BaseWidget又继承了com.esri.viewer.IBaseWidget接口。所有的小部件又由WidgetManager类进行管理。因此,要实现从Application向widget传值,需要经由WidgetManager完成。例如,用户登录时记录了用户名,在widget中需要对用户名进行验证,可通过下述步骤将用户名(字符串)传递到所有的继承了上述小部件基类的widget中。

    1、修改IBaseWidget接口文件,增加下述函数定义:

    function set userName(value:String):void;
    function get userName():String;

    2、在基类BaseWidget中实现上述方法:

    private var _username:String;
    
    [Bindable]
    public function get userName():String
    {
        return _username;
    }
    
    public function set userName(value:String):void
    {
        _username = value;
    }

    3、按照上述方法,在WidgetManager中定义相关的变量和属性存取器,如下:

    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;
    }

    4、假设Application中(一般为主页)有一个名为userNameStr的字符串变量,在WidgetManager的MXML声明中做如下定义:

    <viewer:widgetManager>
         <managers:WidgetManager id="widgetManager" userName="{userNameStr}"/>
    </viewer:widgetManager>

    5、在WidgetManager类的createWidget函数中,在widget.map = map;语句之后添加下述代码:

    widget.userName = this.userName;

    6、测试。用户名为admin,在小部件中添加:

    Alert.show("Widget: " + this.userName);

    执行相关代码,可见到来自小部件的消息框:

    DONE.

  • 相关阅读:
    2021.01.28 Rating赛
    2021.01.23 Rating赛补题报告
    Codeforces Round #104 (Div.2)补题报告
    Codeforces Beta Round #73(Div2)补题报告
    11.28天梯赛补题报告
    11月22日天梯训练补题报告
    11.14补题报告
    CCNA笔记
    Centos上安装mysql配置并授权远程连接部署项目
    web容器(03):Nginx配置负载均衡
  • 原文地址:https://www.cnblogs.com/yeahgis/p/5353369.html
Copyright © 2020-2023  润新知