Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 纯MVC中的多个活动屏幕如何管理特定屏幕的通知?_Apache Flex_Adobe_Puremvc - Fatal编程技术网

Apache flex 纯MVC中的多个活动屏幕如何管理特定屏幕的通知?

Apache flex 纯MVC中的多个活动屏幕如何管理特定屏幕的通知?,apache-flex,adobe,puremvc,Apache Flex,Adobe,Puremvc,纯MVC- 在我的应用程序中,有多个屏幕被最小化,就像在windows桌面中一样。 现在,每个都有不同的中介实例,它们具有相同的通知。 所以,如果我在一个屏幕上做了更改,比如说按下一些按钮>>,它将一些命令>>发送到代理>>,然后代理将通知发送到中介 但当多个屏幕处于活动状态时,它会显示所有屏幕的变化,因为代理也会通知这些屏幕 如何确保对特定视图组件(中介)的代理调用,而不是对中介的所有活动实例的代理调用?在PureMVC结构中,代理通知被发送到中介的所有实例 尽管您可以将执行的操作限制为除所选

纯MVC-

在我的应用程序中,有多个屏幕被最小化,就像在windows桌面中一样。 现在,每个都有不同的中介实例,它们具有相同的通知。 所以,如果我在一个屏幕上做了更改,比如说按下一些按钮>>,它将一些命令>>发送到代理>>,然后代理将通知发送到中介

但当多个屏幕处于活动状态时,它会显示所有屏幕的变化,因为代理也会通知这些屏幕


如何确保对特定视图组件(中介)的代理调用,而不是对中介的所有活动实例的代理调用?

在PureMVC结构中,代理通知被发送到中介的所有实例 尽管您可以将执行的操作限制为除所选组件之外的所有其他组件。如下图所示

  • 单击按钮期间,将选定组件指定给变量
  • 检查中介中handleNotification函数中的id,如下所示
示例:

    public static const ADD_BOLD_STYLE:String = "AddBoldStyle";

    public function TextElementMediator(objViewComponent:Object)
    {
        super(NAME, objViewComponent);
        _objTextData = objTextData; 
    }

    public function get textElement():TextElement
    {
        return viewComponent as TextElement;
    }

    override public function listNotificationInterests():Array
    {
        return [ADD_BOLD_STYLE];
    }

    override public function handleNotification(notification:INotification):void
    {
        switch(notification.getName())
        {               
            case ADD_BOLD_STYLE:
                if(textelement == singleton.selectedObject)
                {
                    //Process your data
                }
                break;
        }
    }

这里singleton指的是selectedObject

问题的措辞是,您正在按下其中一个屏幕上的按钮,并希望更新该视图。应该发生的是,视图应该向中介器发送一个事件。只有当您需要来自代理的业务逻辑或数据时,才应该向命令层发送通知。您说您正在通知代理,这使我相信您需要来自代理的新数据,即您正在从后端请求新数据。当检索到新数据时,它将向中介发送通知,用新数据更新视图。如果数据发生更改,应用程序的其余部分应该更新


如果不是所有的中介都关心这些数据,那么您可能应该为不同的窗口对中介进行子分类,并覆盖“执行”方法。

如果级联窗口打开,此解决方案可能会失败。如果窗口A打开B,而B打开C,该如何处理??