2016-10-28 4 views
0

私はUI5のデータは次のように見に来てい:UI5:バインドデータを動的

"results": [ 
{ 
    "ItemType": "AAA", 
    "AAA": { 
     "Name": "Name of AAA" 
    }, 
    "BBB": null, 
    "CCC": null 
}, 
{ 
    "ItemType": "BBB", 
    "BBB": { 
     "Name": "Name of BBB" 
    }, 
    "AAA": null, 
    "CCC": null 
}, 
{ 
    "ItemType": "CCC", 
    "CCC": { 
     "Name": "Name of CCC" 
    }, 
    "AAA": null, 
    "BBB": null 
}] 

私は、XMLビュー要素にそれらを結合して、私は午前どんな要素のNameフィールドを取得したいように近いです。私はこのような何かを行う必要があり、言うことができるように:

<Text text="{= ${Data&gt;ItemType} === 'AAA' ? 
    ${Data&gt;AAA/Name} : 
    ${Data&gt;ItemType} === 'BBB' ? 
     ${Data&gt;BBB/Name} : 
     ${Data&gt;ItemType} === 'CCC'? 
      ${Data&gt;CCC/Name} : 
      'Unknown Type'} 
    "/> 

これは動作しますが、私は同じことを行うには良い方法があると感じて助けることはできません。最低限、私は同じような要素ごとにその醜いインラインを繰り返さなければなりません。

私は、この(およびその多くのバリエーション)のような何かをしようとした:

明らか
{= Data&gt;${Data&gt;ItemType}/Name} 

それは動作しませんでした。

これを行うより良い方法はありますか?

答えて

0

いいえ、いい方法はありません。動的なデータバインディングはサポートされていません。

代わりに、集計バインディングのファクトリ関数を使用することもできます。それは醜いもののほとんどをコントローラーに移すので、おそらくもっと良い解決策ではありません。

ただし、データを受信した直後に、モデルデータをより適切なバインディングに変換できます。

0

フォーマッタ機能を使用できますか?それはコードを1つの再利用可能なブロックに整理します。あなたはまだ 'if'ロジックが必要ですが、フォーマッタの中にラップされます。

関連する問題