纯 MVC -
在我的应用程序中,有多个屏幕像 Windows 桌面一样被最小化。现在每个都有不同的中介实例,它们具有相同的通知。因此,如果我在一个屏幕上进行更改,说按下某个按钮>>,它将一些命令>>发送到代理>>然后代理向中介发送通知。
但由于多个屏幕处于活动状态,它会显示所有屏幕的变化,因为它们也被代理通知。
如何确保代理调用特定视图组件(调解器)而不是调解器的所有实时实例?
纯 MVC -
在我的应用程序中,有多个屏幕像 Windows 桌面一样被最小化。现在每个都有不同的中介实例,它们具有相同的通知。因此,如果我在一个屏幕上进行更改,说按下某个按钮>>,它将一些命令>>发送到代理>>然后代理向中介发送通知。
但由于多个屏幕处于活动状态,它会显示所有屏幕的变化,因为它们也被代理通知。
如何确保代理调用特定视图组件(调解器)而不是调解器的所有实时实例?
In the PureMVC structure the Proxy notifications are send to all instances of the mediators though you can restrict the action performed to all other components apart from the selected one.like below
Example:
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;
}
}
here singleton refers to selectedObject
您提出问题的方式是您正在按下其中一个屏幕中的按钮并想要更新该视图。应该发生的是视图应该将事件分派给中介。只有当您需要来自代理的业务逻辑或数据时,您才应该向命令层发送通知。您说您正在通知代理,这使我相信您需要来自代理的新鲜数据,即您正在从后端请求新数据。当检索到新数据时,它会向中介发送通知以使用新数据更新视图。如果数据已更改,应用程序的其余部分应更新。
如果不是所有的调解器都关心这些数据,那么您可能应该为您的不同窗口子类化调解器并覆盖“执行”方法。