我试图从后端获取一些数据,我有以下代码:
我在manifest.json
中定义了oData服务:
"DummyName": {
"type": "sap.ui.model.odata.v2.ODataModel",
"settings": {
"defaultBindingMode": "TwoWay",
"defaultCountMode": "Request",
"sequentializeRequests": true
},
"dataSource": "C_VIEW",
"preload": true
}
}
我在我的控制器中有以下编码:
var oModel = this.getView().getModel("DummyName");
我检索服务然后我可以执行以下操作:
我将获得父节点的路径,并将其保存在变量sPath
中。
var sPath = this.getPath();
既然父节点基本上有两个子节点,我可以使用扩展调用,如下所示:
var subnode1 = oModel.getProperty("/" + sPath + '/subNode1');
到目前为止,这工作得很好,如果我对我的subNode2做同样的事情是不行的:
var subnode2 = oModel.getProperty("/" + sPath + '/subNode2');
变量subnode2将保持未定义,我检查了控制台中的oModel并看到了一些奇怪的行为:
对于那个subnode1我会看到一个___list:
我可以打开并找到我可以用sPath +扩展检索的确切子节点,对于subnode2我看到的是一个带有一些超级奇怪URI的__defereed:
,也许有人知道这里缺少什么?
我找到了一种方法来做到这一点,我认为它可能对其他人有帮助,如果这有助于你给一个+1 :)
我绑定List我将直接使用元数据执行此操作:
<List id="myListId" class="sapUiResponsiveMargin" width="auto"
items="{
path: 'Alias>/I_CdsView',
parameters: {expand: 'subNode1,subNode2'},
}]
}"
>
顺便说一下:在subNode1和subNode2之间没有空格是非常重要的,只有一个逗号分隔两者,在那里也浪费了几分钟,因为我在逗号之后使用了一个空格。