在Flex中的组件之间共享数据的最佳方法是什么?

时间:2009-07-09 15:38:20

标签: flex

我有一个Flex应用程序,我正在为一份新工作而努力。它是一种训练轮应用程序 - 我正在学习该语言,而这不是一个需要与服务交谈以完成其工作的应用程序。整个应用程序中有一些组合框实例共享同一组可能的值(例如,选择状态:“正在进行”,“已拒绝”,“完成”)我想要使用相同的数据源

管理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

MVC架构....在简单的情况下只是模型部分:

package 
{


    [Bindable]
    public final class ShellModelSingleton
    {   


        public var selectedStatus:ArrayCollection;




        ////////////////////////////////////////////
        // CONSTRUCTOR
        // ****DO NOT MODIFY BELOW THIS LINE*******
        /////////////////////////////////////////// 
        public function ShellModelSingleton(){}

        /****************************************************************
         * Singleton logic - this makes sure only 1 instance is created
         * Note: you are able to hack this since the constructor doesn't limit 
             * a single instance
         * so make sure the getInstance function is used instead of new 
             * ShellModelSingleton()
         *****************************************************************/ 
        public static function getInstance():ShellModelSingleton {
            if(_instance == null) {
                _instance = new ShellModelSingleton();
            }
            return _instance;
        }

        protected static var _instance:ShellModelSingleton;
    }

}

然后你可以更新和使用任何组件中的单例:

[Bindable] private var model:ShellModelSingleton = 
                              ShellModelSingleton.getInstance();

组件1

<mx:DataGrid id="myDG" dataProvider="{model.selectedStatus}" />

组件2

   <mx:List id="myList" dataProvider="{model.selectedStatus}" 
      labelField="label" />

然后,您对selectedStatus集合所做的任何更改都将在两个组件中更新。

答案 1 :(得分:0)

只需将它们初始化为父组件中的数组。