我有一個在SAP HANA上運行的後端,它使用xsodata
服務與前端(使用SAP UI5編碼)進行通信。在下面的格式xsodata
勞務輸出數據:與SAP UI5上的xsodata進行數據綁定
{
"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"
}
}
在我manifest.json
文件這個信息我加載到一個模型:
"sap.app": {
...
"dataSources": {
"topmusics": {
"uri": "/path/to/odata/music.xsodata/Music_info",
"type": "JSON"
}
}
},
"sap.ui5": {
...
"models": {
"topmusics": {
"dataSource": "topmusics"
}
}
}
在XML視圖我試圖傳遞一個參數來篩選頂部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'"
)將被忽略。有什麼辦法可以做到這一點?
在一個側面節點,我不設置上manifest.json
文件"$top : '5'"
參數,因爲我也希望能夠使用與其他xsodata
參數相同的模型。
編輯:控制器的代碼:在綁定參數
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時,出現「無法讀取屬性'indexOf'未定義」的錯誤。我想知道是否有參數的選項,如$ orderby,$ expand或$ filter,或者如果在URL中使用它們是唯一的方法。 – fc67