SAP HANA上で実行されるバックエンドは、xsodata
サービスを使用してフロントエンド(SAP UI5でコード化)と通信します。次の形式でxsodata
サービスデータを出力する:私はトップをフィルタリングするためのパラメータを渡すためにしようとXMLビューでSAP UI5のxsodataによるデータバインディング
"sap.app": {
...
"dataSources": {
"topmusics": {
"uri": "/path/to/odata/music.xsodata/Music_info",
"type": "JSON"
}
}
},
"sap.ui5": {
...
"models": {
"topmusics": {
"dataSource": "topmusics"
}
}
}
:私はモデルにこの情報をロード私のmanifest.json
ファイルで
{
"d": {
"results": [
{
"__metadata": {
"type": "music.Music_infoType",
"uri": "***/odata/music.xsodata/Music_info('10020')"
},
"ID": "10020",
"TITLE": "Music 1"
},
{
"__metadata": {
"type": "music.Music_infoType",
"uri": "***/odata/music.xsodata/Music_info('10026')"
},
"ID": "10026",
"TITLE": "Music 2"
}
}
5曲を選択し、リストにデータをロードします。しかし、データはファイルの "ルート"から始まらず、 "d/results
"(jsonスニペットを参照)で始まるので、次のコードに渡す必要があります。
<List headerText="Top 5 Musics"
items="{
path : 'topmusics>/d/results',
parameters : {
$top : '5'
}}"
class="sapUiResponsiveMargin">
<CustomListItem type="Navigation" press="onClick">
<Link text="{topmusics>TITLE}"
press="onClick" />
</CustomListItem>
</List>
しかし、このコードではトップ5だけでなく完全な音楽リストが得られます。/d/results
を渡さなければならないので、xsodata
パラメータ("$top : '5'"
)は無視されます。私はこれを達成できる方法はありますか?
サイドノードでは、同じモデルを他のxsodata
パラメータとともに使用できるようにするため、manifest.json
ファイルに"$top : '5'"
パラメータを設定しません。
編集:コントローラーのコード:
onClick: function(oEvent) {
var oItem = oEvent.getSource();
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("musicDetails", {
musicPath: oItem.getBindingContext("topmusics").getPath().substr(11)
});
}
のように設定されます。私はこれを使用しようとしています。https://openui5.hana.ondemand .com /#docs/guide/54e0ddf695af4a6c978472cecb01c64d.html このようにバインディングを設定すると、コードにあるようにodataパラメータを設定できます。 – fc67
これはODataモデルのV4構文であり、下位のOData V2モデルには適用されません。あなたはあなたの場合に使用しなければなりません。 –
私は、これらのパラメータがURL内を渡されたときに機能することが奇妙であると感じましたが、参照してください。とにかく、私はあなたの提案を適用しましたが、リストの要素をクリックすると別のページへのナビゲーションが実行されているので、モデルをODataに変更すると "undefinedのプロパティ 'indexOf'を読み取れません。 $ orderby、$ expand、$ filterなどのパラメータのオプションがあるのか、それともURLでの使用が唯一の方法であるのだろうかと思います。 – fc67