我希望你能帮助我。几次阅读所有文档后,谷歌搜索了几天等等我没有找到方法去做我将以干净的方式解释的事情,并且认为我错过了一些东西,因为它& #39;一个非常基本的场景。
我正在使用oData模型,在本例中是2个命名模型," Model1"," Model2"。现在我想要的是展示一个父母" ComboBox基于oData路径,以及根据选择更改其项目的表格,换句话说。
Model1 { //JSON representation of the data.
Accounts:[
"account 1": {invoices: ["invoice1", "invoice2", "invoice3"]},
"account 2": {invoices:["invoice4", "invoice5"]}
]
}
组合框:
<... items={Model1>/Accounts} /> -- This works and shows Account 1, and Account2.
表
<Table... items="{Model1>Invoices}">
..
<items>
....
</items>
</Table>
我想要的是将其更改为ComboBox上所选帐户的上下文的表格。关键是这样可行,但是第一次加载视图时,由于没有选择帐户,它会调用错误的odata路径MYSERVICE / Invoices,而不是什么也不做,因为尚未设置帐户,并且路径为发票,一旦选择了帐户,应该是MYSERVICE /帐户(&#39;帐户1&#39;)/发票。例如。
我知道我可以通过代码实现这一目标,但我确信必须有一个干净的方法来实现这一点。
说真的,这让我发疯了。
感谢您的帮助。
答案 0 :(得分:1)
你确定吗
items="{Model1>Invoices}"
触发odata通话?因为这是一个相对路径(没有前导斜杠),通常它不应该进行调用。
你能做什么:
使用以下路径设置表格的上下文:
oTable.bindObject({
path: sPath,
model: "Model1",
parameters: {
$expand: "Invoices"
}
});
设置上下文后,相对绑定将自动开始工作,表格将显示&#34; Invoices&#34;
我认为帐户和发票是通过导航属性和一对多基数链接的,这就是为什么 $ expand 参数会加载相应的发票。