我想知道您是如何设计 Qooxdoo 代码。
我没有得到我满意的正确架构。
很难用像服务这样的逻辑来封装View。
我希望有人可以给我一个模式或类似的东西来找到一个好的解决方案。
答案 0 :(得分:4)
Qooxdoo最大的特色之一是强大的OO类系统,所以你使用的模式真的取决于你 - MVC,MVVC等都是可能的,因为Qooxdoo的OO系统为你提供了用于实现您的首选模式的工具。
我觉得非常有用的一种模式,特别是在创建更大的应用程序时,是定义用于编辑模型的自定义小部件;例如,如果您有Customer
的模型(又名" Business Objects"等),Invoice
,InvoiceLine
和Address
有CustomerEditor
的小部件{ {1}},InvoiceEditor
,InvoiceLineEditor
等首先非常有用,因为它封装了代码,但也因为它支持绑定。
绑定是Qooxdoo的一个非常强大的功能 - 要了解为什么,让我们暂时假设您的每个编辑器小部件都有一个名为value
的属性,这是正在编辑的内容。
在简单绑定中,您的编辑器可以将模型的属性绑定到显示和编辑这些属性的窗口小部件,例如CustomerEditor
绑定value.firstName
和value.lastName
到几个{{1自动更改为客户的qx.ui.form.TextField
或firstName
将在两个TextField中更新。绑定也可以反过来运行,因此对TextField的更改将被复制回模型中。
有一个名为lastName
的控制器类可以简化这种情况,并可选择合并用户值和用户反馈的验证。
如果您有单独的编辑器小部件,您也可以绑定它们 - 例如,qx.data.controller.Form
可以将Customer
绑定到value.address
的实例,AddressEditor
可以绑定当前选定的InvoiceEditor
到InvoiceLine
等