纯MVC -
在我的应用程序中,有多个屏幕被最小化,就像在windows桌面中一样。现在,每一个都有不同的mediator实例,它们具有相同的通知。因此,如果我在一个屏幕上做了更改,比如按下某个按钮>>,它会向proxy >>then发送一些命令>>,proxy会向中介发送通知。
但是,当多个屏幕处于活动状态时,它会在所有屏幕中显示更改,因为代理也会通知它们。
如何确保代理调用特定视图组件(中介器),而不是调用中介器的所有活动实例?
发布于 2011-12-20 09:26:43
在PureMVC结构中,代理通知将发送到中介器的所有实例,但您可以将执行的操作限制为除下面选择的one.like之外的所有其他组件
示例:
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
发布于 2015-04-05 14:07:00
您提出问题的方式是,您正在按下其中一个屏幕中的按钮,并希望更新该视图。应该发生的是,视图应该将事件分派给中介者。只有当您需要来自代理的业务逻辑或数据时,才应该向命令层发送通知。您说您正在通知代理,这使我相信您需要来自代理的新数据,即您正在从后端请求新数据。当检索到新数据时,它会向中介器发送一个通知,要求它用新数据更新视图。如果数据发生更改,应用程序的其余部分应该会更新。
如果不是所有的中介器都关心这个数据,那么你可能应该为你的不同窗口继承中介器,并覆盖'execute‘方法。
https://stackoverflow.com/questions/8562084
复制相似问题