如何在SAPUI5中使用输入组件处理数字

2020-08-27 18:40发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨,专家 当我使用Input组...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,专家

当我使用Input组件处理数字字段时,这是一个问题。

在我的代码中,第一步是判断字段的类型

常量类型= typeof(值)

然后,不同类型的数据将返回不同的控件(例如,输入,切换)

代码是这样的

 _generateDataControl:函数(键,值,modelName,sPath){
     令t = {}
     开关(typeof(value)){
         案件编号' : {
             t = new Input(key,{
                 宽度:" 150px",
                 值:{
                     type:'sap.ui.model.type.Integer',//无法处理浮点数
                     路径:`$ {modelName}> $ {sPath}/$ {key}`
                 },
             //值:`{$ {modelName}> $ {sPath}/$ {key}}`////结果是一个字符串
                 类型:InputType.Number
             })
             打破
         }
         大小写"字符串":{
             t = new Input(key,{
                 宽度:" 150px",
                 值:`{$ {modelName}> $ {sPath}/$ {key}}`,
                 类型:InputType.Text
             })
             打破
         }
         案例"布尔值":{
             t =新的Switch(key,{
                 状态:`{$ {modelName}> $ {sPath}/$ {key}}`,
                 类型:SwitchType.AcceptReject
             })
             打破
         }
     }
     返回t
 }
 

我标记的行是我的问题。 如果值为数字,则会创建具有数字类型的Input组件。

如果我未设置值的类型,则用户输入后的结果为字符串。 但是,如果将其设置为Integer,则无法处理浮点数。

在JavaScript中,所有数字包括整数,双精度数和浮点数,均属于Number类型。

那么我该如何做这个自动化数据控制生成器。 谢谢!

3条回答
N-Moskvin
2020-08-27 19:18

大家好

在我的案例中,我受 Mahesh Kumar Palavalli

就我而言,我必须保留用户在输入组件中进行编辑时永远不会更改的字段类型。 在此基础上,如果它能够同时处理整数和浮点数,那就太好了。

所以我向输入组件更改挂钩添加了一个函数。

//如果模板数据字段为"数字"
 案件编号' : {
     t = new Input(key,{
         宽度:" 150px",
         值:`{$ {modelName}> $ {sPath}/$ {key}}`,
         类型:InputType.Number,
         更改:函数(e){
            //保持此字段的类型仍为数字
             const data = Number(this.getValue())
            //手动将数据设置为模型
             oModel.setProperty(`$ {sPath}/$ {key}`,数据)
         }
     })
     打破
 }
 

在我的代码中,当'change'事件触发时,我从输入组件中获取值。 输入组件返回的数据是字符串。 因此,我将其转换为javascript中的数字,然后将其设置为手动建模。 (我认为这不是一个很好的方法)

因此,"类型:InputType.Number"仅通过RegExp设置验证。 并且当它与模型以双向绑定方式绑定时,它不会将结果格式化为数字。 (尽管ABAP的oData服务可能永远不会关心)。 我认为这可能是错误或需要由openui5社区修复或检查的问题。

一周热门 更多>