目前我正在尝试元数据绑定xml,following this blog。当我做输入的maxLength时。但是我得到了以下错误。 error screenshot
目的地的初始模型:
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>
如果删除输入,则类型的标签工作正常。 如何解决这个问题...
答案 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}) }" />