2014-09-30 2 views
1

У меня есть поле ввода (sap.m.Input), для которого мне нужен тип Float. Я пробовал использовать sap.ui.model.type.Float(), но это не сработало.пользовательский тип ввода в sap.m.Input sap ui5

Как я могу использовать пользовательский тип для своего поля ввода. У меня нет привязки, просто нужно установить тип поля ввода как float. Пример был бы очень полезен.

Спасибо заранее, Дипак

ответ

1

У меня такая же проблема, использование нового 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({}) 
    } 
}), 
1
 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); 
2

Вы можете создать пользовательский тип, как таким образом:

<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

+0

Привет Кришна, спасибо за сниппета. Это также гарантирует, что клавиатура отображает номера и «.»/«,» Только? Cheers – AntonSack

Смежные вопросы