• 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.

  • 相关阅读:
    androd ListView + CheckBox 解决超出一屏无法全选的问题。
    关于学习
    正则表达式助记口诀(转)
    无题
    《编程那些事儿》,《学习的艺术》读后泛谈
    我最恐惧的事情是竞争力的丧失
    编写小程序,测试你的严谨思维能力
    倒行逆施的贾金斯先生(转)
    C++学习步骤
    周爱民给程序员的十点建议
  • 原文地址:https://www.cnblogs.com/yeahgis/p/5353369.html
Copyright © 2020-2023  润新知