SuperAPI AI 工具集

ui5-best-practices-mdc

通用与其它

查看项目

更新于 10-15 23:57

技能介绍

用途:在自由式(freestyle)应用中使用 OData V4 服务时,为生成、审查或排查 sap.ui.mdc(MDC)控件代码提供规范。基线版本为 SAPUI5 1.136+ LTS,除特别说明外所述功能自该版本起可用。

主要能力:按控件分主题提供参考文档,触发条件对应加载 references/mdc-filter-bar.md、mdc-chart.md、mdc-field.md、mdc-filter-field.md、mdc-value-help.md、mdc-link.md、mdc-multi-value-field.md;使用 JSON 模型(非 OData)时加载 references/mdc-json-delegates.md。要求在产出任何内容前先加载参考,不要凭记忆编写。

核心机制(委托模式):MDC 控件通过 delegate 将控件与数据源逻辑解耦。需在 XML 中指定 delegate="{name: 'my/app/delegate/MyDelegate', payload: {entitySet: 'Products'}}",实现继承相应基类委托的模块,并至少重写 fetchProperties。OData V4 基类委托:Table 用 sap/ui/mdc/odata/v4/TableDelegate,FilterBar 用 sap/ui/mdc/odata/v4/FilterBarDelegate,Chart 用 sap/ui/mdc/odata/v4/vizChart/Delegate,ValueHelp 用 sap/ui/mdc/ValueHelpDelegate,Link 用 sap/ui/mdc/LinkDelegate,MultiValueField 用 sap/ui/mdc/field/MultiValueFieldDelegate。JSON 模型则直接继承通用基类(sap/ui/mdc/TableDelegate、sap/ui/mdc/FilterBarDelegate),而非 OData V4 变体。fetchProperties 返回 PropertyInfo,至少含 key、label、dataType。

强制规则:每个 MDC 控件都需有效 delegate;用 p13nMode 启用个性化(Table 为 Column、Sort、Filter、Group;Chart 为 Item、Sort、Filter、Type;FilterBar 为 Item);用 sap.ui.mdc.condition.Condition.createCondition() 构造条件;OData V4 的 dataType 用 sap.ui.model.odata.v4.type.,JSON 用 sap.ui.model.type. 并在 TypeMap 注册;FilterBar 与 Chart 设置 ariaLabelledBy;优先使用 Fiori elements 构建块,仅在超出其范围时用 MDC;可用 get_api_reference 校验 API、run_ui5_linter 校验代码。

禁止事项:MDC 不用于 OData V2(应改用 sap.ui.comp 的 Smart 控件);不得直接访问内部控件;PropertyInfo 不得省略 key;不得手写 JSON 条件对象;生产代码不得跳过委托实现;不得使用内联样式或脚本;不得使用全局访问,应使用 sap.ui.define 或 ES6 导入。

适用场景与限制:适用于 OData V4 或 JSON 模型下的委托驱动筛选、图表、字段、值帮助、链接与多值输入;不适用于 OData V2、简单静态图表或纯自定义渲染。资料还列出常见错误(委托加载失败、图表无数据、FilterBar 字段不显示、个性化对话框为空、ValueHelp 不打开、条件未应用、Link 仅渲染为文本)及性能与无障碍注意事项,如避免全量加载 PropertyInfo、实现 updateBindingInfo、委托方法应返回 Promise。具体安装命令与价格信息暂未提供。