Flex PureMVC:在下列情况下,代理可以保持View组件的引用吗?

时间:2013-01-17 12:27:16

标签: flex dynamic views puremvc

我正在学习pureMVC并尝试将框架实现到我的应用程序中。我有以下案例:

我的主要应用程序有Canvas,用于添加不同类型的自定义组件。其中一个自定义组件是“搜索组件”(在页面上创建多个实例)。我的搜索组件有一个文本文件和一个搜索按钮,并按以下步骤启动搜索:

1 - 单击搜索按钮调度自定义事件,该自定义事件将搜索组件的引用保留为属性。

2-My AppMediator监听自定义事件并获取当前搜索组件的引用以及搜索文本。

3-Mediator发送通知(sentNotification(AppConstants.SEARCH_CLICKED,component))。

4 - 我已使用SEARCH_CLICKED通知注册了一个命令。

5-Command检索WebserviceProxy并调用其搜索(文本)方法。

6-WebserviceProxy与远程webservice通信,并使用asyncToken获取结果。

我的问题是: My Command在开始搜索时引用自定义搜索组件,但搜索webservice需要一些时间并获得结果。如何将结果处理回发起搜索的自定义搜索组件。由于我有多个搜索组件实例。如果我在WebserviceProxy中添加一个变量以保留该引用并将结果交给它,或者我必须创建一个全局代理来保留这些组件的引用,那么保留该组件引用的最佳位置是什么?

由于

2 个答案:

答案 0 :(得分:1)

我已经使用PureMVC多年了,我喜欢它!

我认为您还没有理解主要组件的角色和协作。

  1. 您不应该在命令和UI元素之间存在任何依赖关系。您的调解员必须从您的UI组件中获取具体值并通过通知发送。在这种情况下,命令和代理只会得到一个文本值,这是无关紧要的,它的来源是什么!假设您将在一段时间后更改UI,并且您将在用户端使用另一个组件来确定搜索值。在您的情况下,您将不得不更改代理和命令。这会很糟糕。

  2. 代理可能没有任何有关命令和调解器的信息。它只能提供其功能,让其他组件与之交互。它在获取后发送带有新信息的通知,而不知道谁对它感兴趣。

  3. 再次阅读框架说明并写下您的问题。 我在理解这些东西方面遇到了一些问题,我看到了你的问题。

答案 1 :(得分:0)

根据安东的回答,我重新思考并尝试将依赖关系分开。因此,我试图通过向Mediator的构造函数提供不同的ID来单独使用“SearchMediator”来调解Search Widget的每个实例。现在,当搜索小部件启动新搜索时,它的中介调用Command,Command调用Proxy方法进行实际搜索并从DB获取结果并发送通知。 SearchMediator负责处理该通知,并将结果移交给适当的UI。