【发布时间】:2017-02-02 10:26:50
【问题描述】:
我想知道你是如何设计你的 Qooxdoo 代码的。
我没有得到令我满意的正确架构。
View 很难用类似服务的逻辑来封装。
我希望有人能给我一个 Pattern 或其他东西的提示,以找到一个好的解决方案。
【问题讨论】:
标签: qooxdoo
我想知道你是如何设计你的 Qooxdoo 代码的。
我没有得到令我满意的正确架构。
View 很难用类似服务的逻辑来封装。
我希望有人能给我一个 Pattern 或其他东西的提示,以找到一个好的解决方案。
【问题讨论】:
标签: qooxdoo
Qooxdoo 最大的特点之一是强大的 OO 类系统,因此您使用的模式实际上取决于您 - MVC、MVVC 等都是可能的,因为 Qooxdoo 的 OO 系统为您提供了实现您喜欢的模式的工具(s )。
我发现一种非常有用的模式,尤其是在创建更大的应用程序时,是定义用于编辑模型的自定义小部件;例如,如果您有 Customer、Invoice、InvoiceLine 和 Address 的模型(又名“业务对象”等),并有 CustomerEditor、InvoiceEditor、InvoiceLineEditor 等的小部件真正有用首先是因为它封装了代码,还因为它支持binding。
绑定是 Qooxdoo 的一个非常强大的功能 - 要了解原因,让我们假设您的每个编辑器小部件都有一个名为 value 的属性,这是正在编辑的东西。
在简单绑定中,您的编辑器可以将模型的属性绑定到显示和编辑这些属性的小部件,例如 CustomerEditor 绑定 value.firstName 和 value.lastName 到一对 qx.ui.form.TextField 并自动更改为客户的firstName 或 lastName 将在两个 TextField 中更新。绑定也可以反过来工作,因此对 TextField 的更改会复制回模型中。
有一个名为 qx.data.controller.Form 的控制器类可以简化实现这一过程的过程,并且还可以选择合并用户值和用户反馈的验证。
如果您有单独的编辑器小部件,您也可以绑定到它们 - 例如,Customer 可以将 value.address 绑定到 AddressEditor 的实例,InvoiceEditor 可以将当前选择的 InvoiceLine 绑定到 @ 987654341@等
【讨论】: