1

直到最近我一直在使用 cairngorm 作为 flex 的框架。然而,在这个最新的项目中,我切换到了 Mate。它仍然让我有点困惑,因为我有点习惯于将数据留在模型中。我有几个组件依赖于相同的数据集(集合)。在组件中,创建完成处理程序发送一个被其中一个事件映射捕获的“GiveMeMyDataEvent”。现在在我的命令类的 cairngorm 中,我可以快速查看模型以确定是否需要从服务器获取数据,然后从模型返回数据或调用 db。我将如何在 Mate 中执行此操作?或者有没有更好的方法来解决这个问题,我正在尝试利用已经从服务器收到的数据,但同时我不确定我是否已经加载了数据。如果已实例化使用相同数据的组件,则答案为是,否则为否。非常感谢任何帮助/提示。

4

2 回答 2

5

Mate 中的大多数事情都是间接的。您有管理数据的管理器,并在管理器和视图之间设置注入器(它们是绑定)。注入器确保您的视图与您的管理器同步。这样视图总是有最新的数据。视图不会作为调度事件的直接结果而更新,而是作为间接结果。

当您要加载新数据时,您分派一个被事件映射捕获的事件,该事件又调用一些服务,该服务加载数据并将其返回给事件映射,并且事件映射将其粘贴到适当的管理器中。

当管理器更新时,注入器确保视图已更新。

通过使用注入器,您可以保证视图中始终包含最新数据,因此如果视图有数据,则数据会被加载——除非您需要定期更新,在这种情况下,您可以确定数据是否过时并分派触发服务调用的事件,触发更新,触发注入器将新数据再次推送到视图中,然后循环。

因此,简而言之,您的问题的答案是您需要确保正确使用注射器。如果这对您来说太高级了,我知道您可以在Mate 论坛中获得更多帮助。

于 2009-05-09T16:06:54.377 回答
0

我目前正在开发的应用程序遇到了类似的情况,并发现当您开始考虑拥有两个事件时,它很容易在 Mate 中实现。

第一个事件类似于DataEvent.REFRESH_MY_DATA. 这个事件由一些 DataManager 处理,它可以决定要么忽略它(因为数据已经存在于客户端并被认为是最新的),或者管理器可以调度一个事件,如DataEvent.FETCH_MY_DATA.

FETCH_MY_DATA事件触发事件映射中的服务调用,该调用会更新管理器中的值。此更新是属性注入到视图中,快乐的日子 :)

于 2009-07-08T10:07:45.260 回答