簡體   English   中英

sap.m中的自定義輸入類型輸入sap ui5

[英]custom input type in sap.m.Input sap ui5

我有一個輸入字段(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>

現在您可以將type用作Float

        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);

我有同樣的問題,使用新的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構建過程中添加一些參數的MyFloat

您可以通過以下方式使用此類:

new sap.m.Input({
     value: {
         path : "BindingPathToAttribute",
         type : new my.package.MyFloat({})
     }
}),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM