SAPUI5 XML视图中的复杂绑定

时间:2016-10-06 00:47:35

标签: sapui5

我正在尝试将字符串值转换为Boolean,同时从JSONModel绑定它。理想情况下,我的模型中的值是“true”/“false”,我想将它绑定到项的visible属性。该模型被定义为TwoWay绑定,但我想在这种情况下无关紧要

我在index.html中声明了“复杂绑定”。

data-sap-ui-xx-bindingSyntax="complex" 

然后我创建我的XML视图并从模型绑定属性,如下所示:

<P13nColumnsItem>
  columnKey="{tableVariantAFModel>Fieldname}" 
visible="{path:'tableVariantAFModel>Visible', type: 'sap.ui.model.type.Boolean', mode: 'sap.ui.model.BindingMode.TwoWay'}" 
index="{tableVariantAFModel>DisplayOrder}">
  <P13nColumnsItem>

当我运行我的应用程序时,它会抛出以下错误: enter image description here

我错过了什么步骤? 此外,我需要将此应用程序添加到Fiori Launchpad,因此我需要在 manifest.json 文件中而不是在index.html中定义复杂绑定。我在哪里可以在清单文件中定义它。

2 个答案:

答案 0 :(得分:3)

对于这样的简单用例,您可以使用表达式绑定,而不是在某处实现其他逻辑。

<P13nColumnsItem>
  columnKey="{tableVariantAFModel>Fieldname}" 
  visible="{= ${tableVariantAFModel>Visible} === 'true'}" 
  index="{tableVariantAFModel>DisplayOrder}">
<P13nColumnsItem>

答案 1 :(得分:1)

我建议使用格式化程序。见here。在格式化程序中,您可以写:

visible="{path:'tableVariantAFModel>Visible', formatter: '.formatter.stringToBoolean'}" 

在格式化程序中,您可以创建如下函数:

stringToBoolean: function(_stringBoolean){
    (_stringBoolean === "true") ? return true : return false;
}

您必须确保在控制器中实例化格式化程序,或者您可以选择在控制器中选择一个函数。