定义自定义数据类型
Define Custom Data Type
我正在尝试通过扩展 SimpleType 来定义自己的自定义数据类型。我想将它绑定到一个输入字段。但是我一定是做错了什么,因为我的自定义类型被完全忽略了。
这是我的片段:
sap.ui.define([
"sap/ui/model/SimpleType",
"sap/ui/model/ValidateException"
], function (SimpleType, ValidateException) {
"use strict";
return SimpleType.extend("my.model.customFloat", {
formatValue: function(oValue) {
return parseFloat(oValue);
},
parseValue: function(oValue) {
if(isNaN(parseFloat(oValue))) {
return 0.0
}
return parseFloat(oValue);
},
validateValue: function(oValue) {
if(isNaN(parseFloat(oValue))) {
throw new ValidateException(oValue+" is not a valid decimal value");
}
}
});
});
在我的 view.xml 中,我以这种方式使用了我的自定义类型。
<Input value="{ path:'draftModel>SomeCustomValue', type: 'my.model.customFloat'}" change="onEditDoSomething"/>
但是没用。当我键入内容并想要调试 parseValue、formatValue 或 validateValue 时,这些方法从未被调用。我做错了什么?
您还需要在某处加载您的自定义类型。
尝试将 "my/model/customFloat" 添加到控制器的定义部分。没有必要把它变成别名,例如:
sap.ui.define([
"sap/ui/model/SimpleType",
"sap/ui/model/ValidateException",
"my/model/customFloat"
], function (SimpleType, ValidateException) {
"use strict";
...
我正在尝试通过扩展 SimpleType 来定义自己的自定义数据类型。我想将它绑定到一个输入字段。但是我一定是做错了什么,因为我的自定义类型被完全忽略了。
这是我的片段:
sap.ui.define([
"sap/ui/model/SimpleType",
"sap/ui/model/ValidateException"
], function (SimpleType, ValidateException) {
"use strict";
return SimpleType.extend("my.model.customFloat", {
formatValue: function(oValue) {
return parseFloat(oValue);
},
parseValue: function(oValue) {
if(isNaN(parseFloat(oValue))) {
return 0.0
}
return parseFloat(oValue);
},
validateValue: function(oValue) {
if(isNaN(parseFloat(oValue))) {
throw new ValidateException(oValue+" is not a valid decimal value");
}
}
});
});
在我的 view.xml 中,我以这种方式使用了我的自定义类型。
<Input value="{ path:'draftModel>SomeCustomValue', type: 'my.model.customFloat'}" change="onEditDoSomething"/>
但是没用。当我键入内容并想要调试 parseValue、formatValue 或 validateValue 时,这些方法从未被调用。我做错了什么?
您还需要在某处加载您的自定义类型。
尝试将 "my/model/customFloat" 添加到控制器的定义部分。没有必要把它变成别名,例如:
sap.ui.define([
"sap/ui/model/SimpleType",
"sap/ui/model/ValidateException",
"my/model/customFloat"
], function (SimpleType, ValidateException) {
"use strict";
...