我想我在某种程度上缺少UI5 BindingContext和ElementBinding在复杂情况下如何工作。场景中,我有一个实体“ Network”,该实体具有两个导航属性“ Relations”和“ FunctionalObjects”。我现在的问题是,我无法使上下文正常工作。我有一个sap.suite.ui.commons.networkgraph
来显示这种关系。
我的代码如下:
在ViewController的onInit中,使用expand参数将一个(element / BindingContext?)绑定到我的Graph:
//get the Graph by ID
this.Graph = this.byId("graph");
//Create the path with parameters
var element = {
path: "/Networks('DemoNet12')",
parameters: {
expand: "FunctionalObjects,Relations"
}
};
//bind path to Graph
this.Graph.bindElement(element);
跟踪生成的oData调用看起来不错。框架将此调用丢弃到后端的正确服务:GET Networks('DemoNet12')?$expand=FunctionalObjects%2cRelations HTTP/1.1
但是我不知道如何将其连接到网络图的节点和线。
<Graph id="graph" orientation="TopBottom" nodes="{FunctionalObjects}"
lines="{Relations}">
<nodes>
<Node key="{Identifier}"/>
</nodes>
<lines>
<Line from="{ObjectFrom}" to="{ObjectTo}"/>
</lines>
</Graph>
我认为组件的BindingContext是动态且相对的,因此当我将网络“ DemoNet12”绑定到Graph时,当我编写“ {/ Relations}”时,我将获得该图的关系。目前无法使用。我还看到该框架现在又GET Relations?$skip=0&$top=100 HTTP/1.1
和GET FunctionalObjects?$skip=0&$top=100 HTTP/1.1
又丢了两个电话。
有人可以向我解释,我做错了吗?我尝试了几个星座,但目前没有任何效果。我使它起作用的唯一方法是编写此代码并完全注释掉javascript:
<Graph id="graph" nodes="{Networks('DemoNet12')/FunctionalObjects}" lines="{Networks('DemoNet12')/Relations}>"
<!-- nodes and lines as above -->
</Graph>
但这会导致直接调用两次导航。