SmartField 控件解释表示 OData 服务中的实体关系模型、数据类型、服务功能和注释的元数据,以自动生成底层内部控件
并减少开发应用程序所需的代码量。在某些情况下,OData 实体派生自控件的绑定上下文。随控件更改或显示的 OData 实体的属性派生自控件的 value 属性。
重要提示:SmartField 与所有 SAPUI5 智能控件一样,会检索和分析 OData 服务的元数据和注释。 OData 元数据是其主要 API。这些 OData 服务不是 SAPUI5 框架的一部分,通常由应用程序的后端开发人员维护。
随着时间的推移,SmartField 可以发展并获得新功能。这意味着如果定义此更改的注释保留在后端元数据中,则其行为或功能可能会更改。要从新功能中受益,SAP UI5 应用程序应该能够适应后端元数据。因此,SAP 建议仅当开发人员可以完全控制应用程序的元数据时,才使用 SmartField.
Accessibility
出于互操作性和可访问性的原因,SmartField 控件必须由 sap.ui.comp.smartfield.SmartLabel 控件而不是 sap.m.Label 控件标记,因为 sap.m.Label 控件不知道内部结构 一个 SmartField 控件。 如果 SmartField 控件呈现在智能容器控件(例如 SmartForm 控件)中,则会自动生成 SmartLabel 控件以减少应用程序端所需的代码量。 但是,在其他情况下,当 SmartField 单独使用或在智能容器控件之外使用时,例如 SimpleForm 控件,在这些情况下不会自动生成 SmartLabel 控件。 尽管 sap.ui.comp.smartfield.SmartLabel 是私有/内部控件,但应用程序允许以下基本用途用于标记 SmartField 控件。
一个例子:
<sap.ui.comp.smartfield.SmartLabel labelFor="IDProduct"/>
<sap.ui.comp.smartfield.SmartField id="IDProduct" value="{ProductId}"/>
不建议单独使用 SmartLabel 控件。 只允许基本使用,不包括自动处理可见性。 如果单独使用,应用程序逻辑必须注意标签的可见性。
FieldControl
定义字段是强制的、隐藏的还是处于只读/可编辑模式。
实体数据模型 (EDM) 属性可以使用 OData V4 模型中的 com.sap.vocabularies.Common.v1.FieldControl 注释或 OData V2 模型中的 sap:field-control 注释动态注释,方法是提供到另一个属性的绑定路径类型为 Edm.Byte 的 EDM 属性,其在数据模型中的值可以是:
-
0:表示该字段已隐藏。注意: Hidden 是不适用的同义词,不推荐使用,不要使用它来静态隐藏用户界面上的字段,而是使用静态 FieldControl 注释。
-
1:表示该字段处于只读模式,其值不能更改。注意:要将 EDM 属性静态注释为只读,请改用 Org.OData.Core.V1.Computed 注释。
-
3:表示该字段是可编辑的和可选的(默认)。
-
7:表示从业务角度来看该字段是强制性的。此值并不意味着对 EDM 属性的值范围有任何限制。例如,为了限制值范围的使用,必须使用值为 false 的标准类型 facet Nullable 来排除空值,或者必须使用 Org.OData.Validation.V1 词汇表中的术语。
网友评论