我在Apache/Adobe Flex 4中有一个WindowedApplication,它当前包含一个视图(在WindowedApplication MXML中定义的视图)。
在那个应用程序中,我有一个对象,它监听来自网络的数据。当数据可用时,在那个对象上调用一个方法,它将通过改变标签的文本来更新我的视图。
但是我在网络侦听器对象中没有对视图的引用。我如何才能获得它?
这是我定义视图的MXML的一部分。
<fx:Script source="./ViewCodeBehind.as"/>
<!-- ommited stuff -->
<s:Label id="errorLabel"
text=""
fontSize="14"/>
<!-- Stuff in between -->
<s:Button label="Get Status"
click="getStatus();"/>
单击按钮时调用的代码:
public function getStatus(): void
{
var networkGateway: NetworkGateway = new NetworkGatewayImpl();
networkGateway.getConnectionStatus();
}
和网络网关实现
public class NetworkGatewayImpl implements NetworkGateway
{
public function NetworkGatewayImpl()
{
}
public function getConnectionStatus(): void
{
// Start asynchronous network call
// when error occurs onNetworkError() is called
}
private function onNetworkError(): void
{
// Set "errorLabel" here: How?
}
}
本质上,我想知道一些从NetworkGatewayImpl更新“errorLabel”的方法。
1条答案
按热度按时间gopyfrb31#
根据您的代码,可能有多种方法来解决这个问题。最简单的方法(据我所知)是从
NetworkGatewayImpl
类中调度一个事件,并在视图类中创建的示例上侦听它。因此,示例代码如下所示:从您的
NetworkGatewayImpl
类中按如下方式调度您的事件:您必须确保您的
NetworkGatewayImpl
也实现了IEventDispatcher
接口,以便能够调度事件。此外,最佳做法是创建一个自定义Event类(扩展
Event
类),并使用常量而不是文字“networkError”希望这对你有帮助。