社区首页 >问答首页 >在纯MVC中多个活动屏幕如何管理特定屏幕的通知?

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

Stack Overflow用户
提问于 2011-12-19 13:31:59
回答 2查看 357关注 0票数 1

纯MVC -

在我的应用程序中,有多个屏幕被最小化,就像在windows桌面中一样。现在,每一个都有不同的mediator实例,它们具有相同的通知。因此,如果我在一个屏幕上做了更改,比如按下某个按钮>>,它会向proxy >>then发送一些命令>>,proxy会向中介发送通知。

但是,当多个屏幕处于活动状态时,它会在所有屏幕中显示更改,因为代理也会通知它们。

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

EN

回答 2

Stack Overflow用户

发布于 2011-12-20 09:26:43

在PureMVC结构中,代理通知将发送到中介器的所有实例,但您可以将执行的操作限制为除下面选择的one.like之外的所有其他组件

  • 在单击按钮的过程中将选定的组件赋值给singleton class变量
  • 检查handleNotification函数中的id,如下所示的

示例:

代码语言:javascript
代码运行次数:0
复制
    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;
        }
    }

这里的单例是指selectedObject

票数 0
EN

Stack Overflow用户

发布于 2015-04-05 14:07:00

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

如果不是所有的中介器都关心这个数据,那么你可能应该为你的不同窗口继承中介器,并覆盖'execute‘方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8562084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文