我想为像https://sapui5.hana.ondemand.com/docs/api/symbols/sap.ui.core.ValueState.html#.Error这样的自定义控件创建一个自定义枚举类型。
我的问题是:
发布于 2018-05-07 23:14:27
下面是一个例子:https://embed.plnkr.co/DhtkXOkMi12D1AYK
为了在UI5中创建枚举类型,需要考虑某些规则:
sap/base/util/isPlainObject进行验证。{
Red: "Red",
Blue: "Blue",
Yellow: "Yellow"
}为了实际使用枚举对象:
type:
sap.ui.define( "sap/ui/core/Control“、"./ type /MyColor”)、//允许将枚举定义存储在类型注册表中“。//阻止通过同步XHR获取渲染器,函数(控制){”使用严格“;返回Control.extend("demo.custom.control.MyColorBox",{元数据:{selectedColor:{selectedColor:{ type:"demo.custom.control.type.MyColor“},},// . });};};在上面的示例中,只有selectedColor属性等待"Red"、"Blue"或"Yellow"。让我们来测试一下:
new MyColorBox().getMetadata().getProperty("selectedColor").getType().isEnumType()返回true (ManagedObject在动态中创建sap.ui.base.DataType对象)✔️new MyColorBox().setSelectedColor("Hans")抛出一个预期的错误:"Hans“是字符串类型,demo.custom.control.type.MyColor是属性"selectedColor”的元素.✔️new MyColorBox().setSelectedColor("Yellow")成功地存储了值✔️备注
做,而不是,尝试通过DataType.create创建枚举类型。
不能使用此方法创建数组类型和枚举类型。它们是由
DataType.getType在查找这类类型时动态创建的。(来源)
参考文献
发布于 2017-03-02 04:32:32
从定义你的枚举开始。
MessageType.js
sap.ui.define([], function() {
"use strict";
return {
Unread: "Unread",
Read: "Read"
};
});接下来,将此枚举标记为自定义控件中的依赖项,以便能够验证该值。
MyControl.js
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?
}https://stackoverflow.com/questions/41983723
复制相似问题