【问题标题】:Flex: DataGrid and the Command PatternFlex:DataGrid 和命令模式
【发布时间】:2011-03-30 22:20:15
【问题描述】:

我正在使用命令模式,因此对对象状态的任何更改都需要在命令执行中发生。 DataGrid 中的普通 itemeditor 只会对底层绑定对象进行更改,但我需要拦截该更改并使其使用命令。

我对 flex 很陌生,所以我正在寻找如何实现它的想法。一个基本示例是我有一个带有“日期”字段的对象。在数据网格中,我使用 flex“DateField”组件作为 itemeditor。当我选择一个新日期时,我不希望它更新数据源,我希望它调用一个不同的方法,我可以在其中访问新选择的值并将其传递给一个命令来执行。任何提示将非常感谢。提前致谢。

【问题讨论】:

    标签: apache-flex actionscript datagrid advanceddatagrid command-pattern


    【解决方案1】:

    使用 DataGrid 上的 itemEditBegin 和/或 itemEditEnd 事件并在处理程序中构建您的命令。 This page 提供了一些使用这些事件捕获编辑操作的示例。

    【讨论】:

    • 谢谢,这些例子正是我要找的。​​span>
    【解决方案2】:

    在我看来,您将其过度设计到了地狱,以至于它变得无法使用。为什么您需要一个命令来动态更改数据?我做 Flex 已经 3 年了,但我还没有看到它以这种方式完成。命令的唯一用途是从服务器接收信息。

    无论哪种方式,如果您真的想实现它(违反我的建议),您可能希望使用控制器在事件显示列表的上方侦听事件冒泡,然后从那里触发命令。从项目渲染器中:

    this.dispatchEvent(new Event('someEvent', true));
    

    然后在显示列表的上方:

    dataGrid.addEventListener('someEvent', someEventHandler);
    

    您可以在处理程序中运行命令。

    【讨论】:

    • @J_A_X 我同意简化问题的描述似乎有点矫枉过正,但通常当有人谈论模式时,他们正在处理大型应用程序并且可能需要遵循使用的设计约定在应用程序的其余部分中。
    • 我的专长是大型 Flex 应用程序开发。这种模式在传统的 Flex 应用程序中没有使用,因为它没有意义。如果他对此有很好的解释,那当然可以,但我从未见过这样的事情。所以我认为他可能来自 java 或 .net 背景,他不知道应该如何在前端完成。
    • 和我一样。我们一直将命令模式用于模块化“仪表板”风格的应用程序。它在大多数依赖注入 (DI) 框架中也非常普遍。但我大多同意你的看法。我只是说,如果不了解更多关于场景的信息,我们几乎无法提出架构建议。任何事情都有时间和地点,甚至是命令模式。 :)
    • 是的,但是在 DI 框架中,您可能使用命令模式从服务器请求/发送信息,而不是使用它来更新模型。
    • touché :D ...最好不要用业务逻辑污染显示。虽然,命令模式是数据驱动应用程序(又名运行时标记语言)的王者。但我同意最好将这些问题留给业务逻辑层。
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2011-04-22
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多