sap.m中的自定义输入类型.输入sap-ui5

custom input type in sap.m.Input sap ui5

本文关键字:输入 类型 sap-ui5 自定义 sap      更新时间:2023-09-26

我有一个输入字段(sap.m.input),我需要它的类型为Float。我试着使用sap.ui.model.type.Float(),但没有成功。

如何为输入字段使用自定义类型。我没有任何绑定,只需要将输入字段的类型设置为float。举个例子会很有帮助。

提前感谢,Deepak

您可以这样创建自定义类型:

<script type="text/javascript">
    (function(){
        "use strict";
        jQuery.sap.declare('Float');
        jQuery.sap.require('sap.ui.base.DataType');
        Float = sap.ui.base.DataType.createType( "Float", 
            { isValid : 
                function(sValue) {
                    return ((sValue % 1) != 0);
                }
            }, sap.ui.base.DataType.getType('number') 
        );
    })();
</script>

现在您可以使用类型作为Float

我也有同样的问题,使用新的sap.ui.model.type.Float似乎会将OData服务(Edm.Decimal)中的字符串转换为实际的浮点数。这将适用于显示正确的数字,但如果您试图写回更改后的值(OData双向绑定),则不适用。

因此,我实现了一种自己的类型:

jQuery.sap.declare("my.package.MyFloat");
sap.ui.model.SimpleType.extend("my.package.MyFloat", {
    formatValue : function(oValue) {
        return oValue;
    },
    parseValue : function(oValue) {
        return oValue;
    },
    validateValue : function(oValue) {
        if (oValue != null && oValue != "" && oValue != undefined) {
            if (isNaN(Number(oValue))) {
                var messageString = sap.ui.getCore().getModel("i18n").getResourceBundle().getText("KEY_TO_ERROR_MESSAGE");
                throw new sap.ui.model.ValidateException(messageString);
            }
        }
    }
})

我在这里检测到一个SAP示例:http://help.sap.com/saphelp_nw74/helpdata/de/91/f0652b6f4d1014b6dd926db0e91070/content.htm在文件中搜索PLZ。

目前,我正在寻找一种在MyFloat的构建过程中添加一些参数的方法。

你可以这样使用这样一种类型:

new sap.m.Input({
     value: {
         path : "BindingPathToAttribute",
         type : new my.package.MyFloat({})
     }
}),
        var oInp = new sap.m.Input({
            liveChange : function(oEvent){
                debugger;
                var value = parseFloat(oEvent.getSource().getProperty('value'));
                if(value % 1 === 0 || isNaN(value))             
                    valueState = "Error";               
                else
                    valueState = "Success";
                oEvent.getSource().setValueState(valueState);               
              }
        });
        oInp.setType(sap.m.InputType.Number);