Qooxdoo桌面设计最佳实践
Qooxdoo Desktop Design Best Practice
我想知道你是如何设计你的 Qooxdoo 代码的。
我没有找到令我满意的正确架构。
像服务这样的逻辑很难封装View。
我希望有人能给我一个模式或其他东西的提示,以找到一个好的解决方案。
Qooxdoo 的最大特点之一是强大的 OO class 系统,所以您使用的模式真的取决于您 - MVC、MVVC 等都是可能的,因为 Qooxdoo 的 OO 系统为您提供了工具实施您喜欢的模式。
我发现一种非常有用的模式,尤其是在创建更大的应用程序时,是定义用于编辑模型的自定义小部件;例如,如果您有 Customer
、Invoice
、InvoiceLine
和 Address
的模型(又名 "Business Objects" 等)和 CustomerEditor
的小部件, InvoiceEditor
, InvoiceLineEditor
等确实有用,首先是因为它封装了代码,还因为它支持 binding.
绑定是 Qooxdoo 的一项非常强大的功能 - 为了了解原因,让我们暂时假设您的每个编辑器小部件都有一个名为 value
的 属性,这就是正在编辑的内容。
在简单绑定中,您的编辑器可以将模型的属性绑定到显示和编辑这些属性的小部件,例如 CustomerEditor
将 value.firstName
和 value.lastName
绑定到几个 qx.ui.form.TextField
并自动更改客户的 firstName
或 lastName
将在两个 TextField 中更新。绑定也可以反过来工作,以便将对 TextField 的更改复制回模型中。
有一个名为 qx.data.controller.Form
的控制器 class 可以简化实现这一过程,并且可以选择合并用户值和用户反馈的验证。
如果您有单独的编辑器小部件,您也可以绑定到它们 - 例如,Customer
可以将 value.address
绑定到 AddressEditor
的实例,而 InvoiceEditor
可以将当前选择的 InvoiceLine
绑定到 InvoiceLineEditor
等
我想知道你是如何设计你的 Qooxdoo 代码的。
我没有找到令我满意的正确架构。
像服务这样的逻辑很难封装View。
我希望有人能给我一个模式或其他东西的提示,以找到一个好的解决方案。
Qooxdoo 的最大特点之一是强大的 OO class 系统,所以您使用的模式真的取决于您 - MVC、MVVC 等都是可能的,因为 Qooxdoo 的 OO 系统为您提供了工具实施您喜欢的模式。
我发现一种非常有用的模式,尤其是在创建更大的应用程序时,是定义用于编辑模型的自定义小部件;例如,如果您有 Customer
、Invoice
、InvoiceLine
和 Address
的模型(又名 "Business Objects" 等)和 CustomerEditor
的小部件, InvoiceEditor
, InvoiceLineEditor
等确实有用,首先是因为它封装了代码,还因为它支持 binding.
绑定是 Qooxdoo 的一项非常强大的功能 - 为了了解原因,让我们暂时假设您的每个编辑器小部件都有一个名为 value
的 属性,这就是正在编辑的内容。
在简单绑定中,您的编辑器可以将模型的属性绑定到显示和编辑这些属性的小部件,例如 CustomerEditor
将 value.firstName
和 value.lastName
绑定到几个 qx.ui.form.TextField
并自动更改客户的 firstName
或 lastName
将在两个 TextField 中更新。绑定也可以反过来工作,以便将对 TextField 的更改复制回模型中。
有一个名为 qx.data.controller.Form
的控制器 class 可以简化实现这一过程,并且可以选择合并用户值和用户反馈的验证。
如果您有单独的编辑器小部件,您也可以绑定到它们 - 例如,Customer
可以将 value.address
绑定到 AddressEditor
的实例,而 InvoiceEditor
可以将当前选择的 InvoiceLine
绑定到 InvoiceLineEditor
等