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