2016-10-06 104 views
0

我試圖從JSONModel綁定它時將字符串值轉換爲布爾值。理想情況下,我的模型中的值爲「true」/「false」,我想將其綁定到項目的可見屬性。該模型被定義爲雙向綁定,但我想在這種情況下無關SAPUI5中的複雜綁定XML視圖

我已經在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中定義複雜綁定。我在哪裏可以在清單文件中定義它。

回答

1

我會建議使用格式化程序。見here。在格式化你可以寫:

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

的格式,你可以創建這樣的功能:

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

你必須確保你實例格式化您的控制器,或任意你可以選擇控制器本身的一個功能。

+0

Thanks Matti。我目前正在使用格式化程序。 SAPUI5文檔說格式化器是微不足道的。另外,如何在清單文件中定義我的複雜綁定? – Deepak

+0

這取決於你的UI5版本,但一般來說你應該可以添加設置到你的模型。使用TwoWay添加值defaultBindingMode。 –

+0

謝謝馬蒂。現在作品 – Deepak

3

對於這樣的簡單用例,您可以使用表達式綁定,而不是在某處實現其他邏輯。

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

甜美!謝謝@matbtt –

+0

以下是[sap幫助鏈接](https://help.sap.com/saphelp_uiaddon10/helpdata/en/da/f6852a04b44d118963968a1239d2c0/content.htm)。 –