属性" maxLength"的例外情况of sap fiori输入组件

时间:2018-02-02 02:45:05

标签: sapui5

目前我正在尝试元数据绑定xml,following this blog。当我做输入的maxLength时。但是我得到了以下错误。 error screenshot

demo service

目的地的初始模型:

initModel: function() {
    var sServiceUrl = "/odsrv/V2/Northwind/Northwind.svc/";
    var oModel = new OM(sServiceUrl, true);
    this.setModel(oModel, "oRefModel");
    sap.ui.getCore().setModel(oModel, "oRefModel");
}

xml视图:

<content>
    <Label text="{oRefModel>/#Category/CategoryName/@type}"/>
    <Input maxLength="{oRefModel>/#Category/CategoryName/@maxLength}"/>
</content>

如果删除输入,则类型的标签工作正常。 如何解决这个问题...

3 个答案:

答案 0 :(得分:1)

带有表达式绑定的版本可能就是这样

<Input maxLength="{= isNaN(${oRefModel>/#Category/CategoryName/@maxLength}) ? 0 : parseInt(${oRefModel>/#Category/CategoryName/@maxLength})" />

需要进行typeof检查,因为在绑定过程开始时属性的值可能是'NaN',并且给出了错误,整个过程将停止。

如果您可以改进该版本,请执行:)

答案 1 :(得分:0)

<Input maxLength="{parts:[{path:'oRefModel>/#Category/CategoryName/@maxLength'}],formatter: 'your.formatter.toNum' }" />
  

格式化程序代码

toNum : function(maxlen){
            return parseInt(maxlen);;
        }

将字符串转换为整数是关键

答案 2 :(得分:0)

更短,无需编写自定义格式化程序功能:使用内置的parseInt函数。

<Input
    maxLength="{
        path: 'oRefModel>/#Category/CategoryName/@maxLength',
        formatter: 'parseInt'
    }" />

由于某些原因,表达式绑定会工作,也许有人可以告诉我原因:

<Input maxLength="{= parseInt(${oRefModel>/#Category/CategoryName/@maxLength}) }" />