Qooxdoo桌面设计最佳实践

Qooxdoo Desktop Design Best Practice

我想知道你是如何设计你的 Qooxdoo 代码的。

我没有找到令我满意的正确架构。

像服务这样的逻辑很难封装View。

我希望有人能给我一个模式或其他东西的提示,以找到一个好的解决方案。

Qooxdoo 的最大特点之一是强大的 OO class 系统,所以您使用的模式真的取决于您 - MVC、MVVC 等都是可能的,因为 Qooxdoo 的 OO 系统为您提供了工具实施您喜欢的模式。

我发现一种非常有用的模式,尤其是在创建更大的应用程序时,是定义用于编辑模型的自定义小部件;例如,如果您有 CustomerInvoiceInvoiceLineAddress 的模型(又名 "Business Objects" 等)和 CustomerEditor 的小部件, InvoiceEditor, InvoiceLineEditor 等确实有用,首先是因为它封装了代码,还因为它支持 binding.

绑定是 Qooxdoo 的一项非常强大的功能 - 为了了解原因,让我们暂时假设您的每个编辑器小部件都有一个名为 value 的 属性,这就是正在编辑的内容。

在简单绑定中,您的编辑器可以将模型的属性绑定到显示和编辑这些属性的小部件,例如 CustomerEditorvalue.firstNamevalue.lastName 绑定到几个 qx.ui.form.TextField 并自动更改客户的 firstNamelastName 将在两个 TextField 中更新。绑定也可以反过来工作,以便将对 TextField 的更改复制回模型中。

有一个名为 qx.data.controller.Form 的控制器 class 可以简化实现这一过程,并且可以选择合并用户值和用户反馈的验证。

如果您有单独的编辑器小部件,您也可以绑定到它们 - 例如,Customer 可以将 value.address 绑定到 AddressEditor 的实例,而 InvoiceEditor可以将当前选择的 InvoiceLine 绑定到 InvoiceLineEditor