Sapui5 创建自定义枚举类型
我想为自定义控件创建自定义枚举类型,如 我的问题是:Sapui5 创建自定义枚举类型,sapui5,Sapui5,我想为自定义控件创建自定义枚举类型,如 我的问题是: 如何创建枚举类型 在自定义控件上,只能传递属性枚举 类型。如何验证给定的枚举是否有效 从定义枚举开始 MessageType.js sap.ui.define([], function() { "use strict"; return { Unread: "Unread", Read: "Read" }; }); sap.ui.define(["sap/ui/core/Contro
- 如何创建枚举类型李>
- 在自定义控件上,只能传递属性枚举
类型。如何验证给定的枚举是否有效
sap.ui.define([], function() {
"use strict";
return {
Unread: "Unread",
Read: "Read"
};
});
sap.ui.define(["sap/ui/core/Control", "/path/to/MessageType.js"], function(Control, MessageType) {
Control.extend("myControl", {
someMethod: function(sMessageType) {
// Validate if we are dealing with a valid message type
var aKeys = Object.keys(MessageType);
var bValidEnumValue = aKeys.some(function(sKey) {
if (MessageType[sKey]) {
return true;
}
});
// Do other stuff..
}
});
});
接下来,将此枚举标记为自定义控件中的依赖项,以便能够验证该值
MyControl.js
sap.ui.define([], function() {
"use strict";
return {
Unread: "Unread",
Read: "Read"
};
});
sap.ui.define(["sap/ui/core/Control", "/path/to/MessageType.js"], function(Control, MessageType) {
Control.extend("myControl", {
someMethod: function(sMessageType) {
// Validate if we are dealing with a valid message type
var aKeys = Object.keys(MessageType);
var bValidEnumValue = aKeys.some(function(sKey) {
if (MessageType[sKey]) {
return true;
}
});
// Do other stuff..
}
});
});
当然,检查您是否正在处理有效的枚举值的方法可以通过不同的方式实现,具体取决于您尝试执行的操作
if (sMessageType === MessageType.Read) {
// do something
} else if (sMessageType === MessageType.Unread) {
// do something else
} else {
// throw an error?
}
以下是一个例子:
要在UI5中创建枚举类型,需要考虑某些规则:
- 枚举定义必须是普通对象。在内部,它通过验证
- 每个键值对必须彼此相同
- 不支持重命名
- 仅支持字符串类型的键和值 支持
{
红色:“红色”,
蓝色:“蓝色”,
黄色:“黄色”
}
也就是说,为了实际使用enum对象:
/**
*文件:MyColor.js
*路径:“自定义/控件/类型/”
*名称空间:“演示”
*/
ui.define({//模块值
红色:“红色”,
蓝色:“蓝色”,
黄色:“黄色”,
},对);//结果模块名:“demo.custom.control.type.MyColor”
类型
:
sap.ui.define([
“sap/ui/core/Control”,
“/MyColorBoxRenderer”,
“/type/MyColor”,//定义模块并阻止通过sync XHR获取它
],功能(控制){
“严格使用”;
return Control.extend(“demo.custom.Control.MyColorBox”{
元数据:{
特性:{
“selectedColor”:{
类型:“demo.custom.control.type.MyColor”
},
},
},
// ...
});
});
selectedColor
属性只等待“红色”
、“蓝色”
、或“黄色”
。让我们测试一下:
返回new MyColorBox().getMetadata().getProperty(“selectedColor”).getType().isEnumType()
(返回创建的对象)✔️李>true
按预期抛出错误: “Hans”的类型为字符串,属性“selectedColor”应为demo.custom.control.type.enum.PrimaryColor。。。✔️new MyColorBox().setSelectedColor(“Hans”)
成功存储该值✔️李>new MyColorBox().setSelectedColor(“黄色”)
注
- 不要尝试通过
数据类型创建枚举类型。创建
无法使用此方法创建数组类型和枚举类型。它们是由
在查找此类类型时动态创建的DataType.getType
- 根据,枚举类型的默认值将是第一个键
将是在普通对象中找到的第一个键的值 。。在我们的例子中,它将是红色的。但只有在调用了defaultValue
时才是这样。值thatEnumType.getDefaultValue()
不适用于控件内元数据的“Red”
。在那里,如果没有另外定义,defaultValue
将只是defaultValue
未定义
- (搜索“枚举”事件)
- 文档主题