2017-02-02 2 views
1

Я хотел бы знать, как вы разрабатываете свой Qooxdoo Код.Qooxdoo Desktop Design Лучшая практика

Я не получаю правильную архитектуру, которой я доволен.

Трудно инкапсулировать представление с помощью логических функций.

Я надеюсь, что кто-то может дать мне намек на образец или что-то, чтобы найти хорошее решение.

ответ

4

Одна из величайших функций Qooxdoo - сильная система класса OO, так что действительно шаблон, который вы используете, зависит от вас - MVC, MVVC и т. Д. Все это возможно, поскольку система OO Qooxdoo предоставляет вам инструменты для реализации вашего предпочтительного шаблона (с).

Один шаблон, который мне очень пригодится, особенно для создания более крупных приложений, заключается в определении пользовательских виджетов для редактирования моделей; например, если у вас есть модели (так называемый «Business Objects» и т.д.) для Customer, Invoice, InvoiceLine и Address, имеющий виджет CustomerEditor, InvoiceEditor, InvoiceLineEditor и т.д. действительно полезно, во-первых, потому что он инкапсулирует код, но и потому, что он поддерживает переплет.

Связывание - очень мощная функция Qooxdoo - чтобы понять, почему, давайте предположим на мгновение, что каждый из виджета Editor имеет свойство, называемое value, которое редактируется.

В простых привязках, ваш редактор может связать свойство модели с виджетами, которые отображают и редактировать эти свойства, например CustomerEditor связывают value.firstName и value.lastName на пару qx.ui.form.TextField и автоматически изменяется на клиент firstName или lastName будет обновлен два текстовых поля. Связывание может работать и наоборот, так что изменения в TextField будут скопированы обратно в модель.

Существует класс контроллера, называемый qx.data.controller.Form, который может упростить его выполнение и, возможно, включать проверку пользовательских значений и отзывов пользователей.

Если у вас есть отдельные виджеты Editor, вы можете также связываться с ними - например, Customer мог связать value.address к экземпляру AddressEditor и InvoiceEditor мог связать выбранный в настоящее время InvoiceLine в InvoiceLineEditor и т.д.

Смежные вопросы