SAPUI5:如何创建控件层次结构?

时间:2017-07-24 11:31:57

标签: sap sapui5

我希望你能帮助我。几次阅读所有文档后,谷歌搜索了几天等等我没有找到方法去做我将以干净的方式解释的事情,并且认为我错过了一些东西,因为它& #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;)/发票。例如。

我知道我可以通过代码实现这一目标,但我确信必须有一个干净的方法来实现这一点。

说真的,这让我发疯了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你确定吗

items="{Model1>Invoices}"

触发odata通话?因为这是一个相对路径(没有前导斜杠),通常它不应该进行调用。

你能做什么:

  1. 处理ComboBox selectionChange事件;
  2. 在此事件处理程序中,创建一个将表绑定到的路径。在您的情况下,路径可能如下所示:&#34; /帐户(帐户1)&#34; - &#34; / {EntitySetName}({KEY})&#34;。您可以使用createKey;
  3. ODataModel2方法
  4. 使用以下路径设置表格的上下文:

    oTable.bindObject({ path: sPath, model: "Model1", parameters: { $expand: "Invoices" } });

  5. 设置上下文后,相对绑定将自动开始工作,表格将显示&#34; Invoices&#34;

  6. 我认为帐户和发票是通过导航属性和一对多基数链接的,这就是为什么 $ expand 参数会加载相应的发票。